iOS WebView 用<input type=file>
标签打开系统相册会出现dismiss
掉当前视图的bug,这是因为点击系统弹出的alertController时,会多次调用dismiss
(不知原因)。如果WebView自己或者根视图是通过present
出来的,则会被dismiss
掉,而用navigation
push
出来的则没有问题。
解决办法
- 不使用
present
方式展示WebView - 用自定义
navigation
套着WebView,然后override
dismiss
方法
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