在iOS開(kāi)發(fā)中通常會(huì)做的隱藏狀態(tài)欄或者自定義返回按鈕,相應(yīng)的pop手勢(shì)也失效了笨觅,下面就需要解決下這個(gè)問(wèn)題。
navigationBar.isHidden = true
self.navigationItem.leftBarButtonItem = 自定義返回按鈕;
解決方案:
我們?cè)谧远x導(dǎo)航控制器里我們自己的手勢(shì)
class NavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
navigationBar.isHidden = true
setupEdgeGesture()
}
func setupEdgeGesture() {
guard let targets = interactivePopGestureRecognizer!.value(forKey: "_targets") as? [NSObject] else { return }
let targetObjc = targets[0]
let target = targetObjc.value(forKey: "target")
let action = Selector(("handleNavigationTransition:"))
//UIPanGestureRecognizer 全屏手勢(shì)
//UIScreenEdgePanGestureRecognizer 邊緣手勢(shì)
let panGes = UIScreenEdgePanGestureRecognizer(target: target, action: action)
panGes.delegate = self;
view.addGestureRecognizer(panGes)
}
}
//如果需要監(jiān)聽(tīng)手勢(shì)
extension NavigationController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if let transitioning = value(forKey: "_isTransitioning") as? Bool {
if transitioning {return false}
}
return viewControllers.count > 1
}
}
這樣就可以有效的解決返回pop手勢(shì)失效問(wèn)題
各位看官如果發(fā)現(xiàn)有什么不對(duì)的,請(qǐng)留言或者加qq:286349583,一起討論,謝謝=衢!