一個偶然的事件,事情是這樣的:
有一個頁面需要側(cè)滑返回攔截,我把代理設(shè)置給了當(dāng)前的ViewController
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
}
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if let pan:UIPanGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer{
//做一些攔截操作
return false
}
return true
}
然后我就發(fā)現(xiàn)其他頁面就不能側(cè)滑返回了,測試了好多次,只要進(jìn)入這個ViewController之后,再去其他頁面就不能側(cè)滑了,再去其他ViewController之后打印self.navigationController?.interactivePopGestureRecognizer?.delegate為空,原來如此,那我就臨時保存一下這個代理
private weak var tempDelete:UIGestureRecognizerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
self.tempDelete = self.navigationController?.interactivePopGestureRecognizer?.delegate
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
}
然后我在viewWillDisappear中重新設(shè)置代理
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.interactivePopGestureRecognizer?.delegate = tempDelete
}
然后就OK了,其他頁面也可以側(cè)滑了