Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WKWebView ImagePicker捕获选择图片的事件_Ios_Uiimagepickercontroller_Wkwebview - Fatal编程技术网

Ios WKWebView ImagePicker捕获选择图片的事件

Ios WKWebView ImagePicker捕获选择图片的事件,ios,uiimagepickercontroller,wkwebview,Ios,Uiimagepickercontroller,Wkwebview,我正在使用WKWebView,并在其上点击“加载文件”。WKWebView为我打开UIImagePickerView,在此期间我需要知道选择了什么图像。对我很有用 override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) { if let imagePicker = viewControllerToP

我正在使用WKWebView,并在其上点击“加载文件”。WKWebView为我打开UIImagePickerView,在此期间我需要知道选择了什么图像。

对我很有用

override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
    if let imagePicker = viewControllerToPresent as? UIImagePickerController {
        previousIPDelegate = imagePicker.delegate
        imagePickerController = imagePicker
        imagePickerController?.delegate = self
    }

    super.present(viewControllerToPresent, animated: flag, completion: completion)
}
在此之后-您将能够使用didFinishPickingMediaWithInfo func,在该功能中,您可以捕获并使用所选的媒体,应将旧代理返回到imagePicker,并在旧代理中调用didFinishPickingMediaWithInfo func

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    var newInfo = info
    if let pickedImage = newInfo[UIImagePickerControllerOriginalImage] as? UIImage {
        /// DO YOUR STUFF HERE
    }

    picker.delegate = previousIPDelegate
    previousIPDelegate?.imagePickerController!(picker, didFinishPickingMediaWithInfo: newInfo)
}
您应该在DidCancel func中执行相同的操作

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.delegate = previousIPDelegate
    previousIPDelegate?.imagePickerControllerDidCancel!(picker)
}
为我工作

override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
    if let imagePicker = viewControllerToPresent as? UIImagePickerController {
        previousIPDelegate = imagePicker.delegate
        imagePickerController = imagePicker
        imagePickerController?.delegate = self
    }

    super.present(viewControllerToPresent, animated: flag, completion: completion)
}
在此之后-您将能够使用didFinishPickingMediaWithInfo func,在该功能中,您可以捕获并使用所选的媒体,应将旧代理返回到imagePicker,并在旧代理中调用didFinishPickingMediaWithInfo func

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    var newInfo = info
    if let pickedImage = newInfo[UIImagePickerControllerOriginalImage] as? UIImage {
        /// DO YOUR STUFF HERE
    }

    picker.delegate = previousIPDelegate
    previousIPDelegate?.imagePickerController!(picker, didFinishPickingMediaWithInfo: newInfo)
}
您应该在DidCancel func中执行相同的操作

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.delegate = previousIPDelegate
    previousIPDelegate?.imagePickerControllerDidCancel!(picker)
}

阅读文档:或者一些教程,比如您已经尝试过的内容?请多次阅读文档。试图通过navigationDelegate的func的DecidePolicy捕获链接。我没听懂。实际上-我在WKWebView中找不到对UIImagePickerView的访问,这毫无意义:(提供足够的代码来复制您的场景,以便有人能够轻松测试您的逻辑并提供解决方案阅读文档:或一些教程,如您已经尝试过的内容?多次阅读文档。试图通过navigationDelegate的func通过DecidePolicy捕获链接。没有捕获。实际上-我找不到对UIImagePickerView ins的访问权限。)没有意义的ide WKWebView:(提供足够的代码来复制您的场景,以便有人能够轻松测试您的逻辑并提供解决方案。这非常有效,非常感谢,为我节省了很多时间!在我的情况下,这是一个复杂的场景,因为我正在WKWebView上从Froala editor打开一个摄像头,但您的解决方案为我指明了一条道路,非常感谢!什么是“previousIPDelegate”?这很有效,非常感谢,节省了我很多时间!在我的情况下,这是一个复杂的场景,因为我正在WKWebView上从Froala编辑器打开一个摄像头,但您的解决方案为我指明了一条路,非常感谢!什么是“previousIPDelegate”?