iOS WebView 用<input type=file>标签打开系统相册会出现dismiss掉当前视图的bug,这是因为点击系统弹出的alertController时,会多次调用dismiss(不知原因)。如果WebView自己或者根视图是通过present出来的,则会被dismiss掉,而用navigation push出来的则没有问题。

解决办法
- 不使用
present方式展示WebView - 用自定义
navigation套着WebView,然后overridedismiss方法
class WebViewNavigationController: UINavigationController {
override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
// fix webview input-file dismiss-twice bug
if let _ = self.presentedViewController {
super.dismiss(animated: flag, completion: completion)
}
}
}
let webViewController
let nav = WebViewNavigationController(rootViewController: webViewController)
self.present(nav, animated: true, completion: nil)
Read more
