Ios WKWebView ImagePicker捕获选择图片的事件
我正在使用WKWebView,并在其上点击“加载文件”。WKWebView为我打开UIImagePickerView,在此期间我需要知道选择了什么图像。对我很有用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
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”?