iOS WebView 用<input type=file>標(biāo)簽打開系統(tǒng)相冊會出現(xiàn)dismiss掉當(dāng)前視圖的bug,這是因?yàn)辄c(diǎn)擊系統(tǒng)彈出的alertController時(shí),會多次調(diào)用dismiss(不知原因)。如果WebView自己或者根視圖是通過present出來的,則會被dismiss掉,而用navigation push出來的則沒有問題。

解決辦法
- 不使用
present方式展示W(wǎng)ebView - 用自定義
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