我想在用戶滑動彈出的 viewController 時進行檢查。例如,當在 WhatsApp 中,用戶通過從邊緣滑動來退出當前聊天。這在 Swift 中怎么可能?
我不想使用 viewDidDisappear,因為當另一個 viewController 呈現在當前 viewController 上時,也會呼叫此方法。
uj5u.com熱心網友回復:
這種“刷卡”被處理interactivePopGestureRecognizer的UINavigationController。可以將此手勢識別器的委托設定為您的UIViewController,如下所示:
navigationController?.interactivePopGestureRecognizer?.delegate = self
然后,您可以UIGestureRecognizerDelegate在您的UIViewController. 這看起來像這樣:
extension YourViewController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
guard gestureRecognizer.isEqual(self.navigationController?.interactivePopGestureRecognizer) else { return true }
print("The interactive pop gesture recognizer is being called.")
return true
}
}
我還沒有測驗過代碼,但是每次使用 InteractivePopGestureRecognizer 時都應該列印出來。
有關更多資訊,請參閱InteractivePopGestureRecognizer和UIGestureRecognizerDelegate的檔案。
uj5u.com熱心網友回復:
正如我在評論中所寫,一個簡單的解決方法是在 中viewDidDisappear,檢查是否navigationController是nil。
class MyVc: UIViewController {
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
if navigationController == nil {
print("view controller has been popped")
}
}
}
當然,此解決方案僅在視圖控制器嵌入到導航控制器中時才有效,否則 if 陳述句將始終為true。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/390831.html
