美文网首页
Ios 导航控制器问题(一):关闭导航栏默认的手势侧滑返回功能

Ios 导航控制器问题(一):关闭导航栏默认的手势侧滑返回功能

作者: 青天揽明月 | 来源:发表于2017-04-08 15:48 被阅读0次

方法是让当前控制器取代导航的手势代理,控制器消失时再还回去,略麻烦但无副作用

// 设置属性保存导航的interactivePopGestureRecognizer的代理,记得使用weak标记弱引用
 weak var savedGestureRecognizerDelegate:UIGestureRecognizerDelegate?

// 在进入控制器时保存导航的interactivePopGestureRecognizer属性
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        savedGestureRecognizerDelegate = self.navigationController?.interactivePopGestureRecognizer?.delegate
        self.navigationController?.interactivePopGestureRecognizer?.delegate = self
    }

//离开控制器的时候,把导航的delegate还回去
  override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.interactivePopGestureRecognizer?.delegate = savedGestureRecognizerDelegate
    }

//遵守UIGestureRecognizerDelegate协议,把手势返回的代理方法实现为空
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        if gestureRecognizer == self.navigationController?.interactivePopGestureRecognizer {
            return false
        }
        return true
    }

相关文章

网友评论

      本文标题:Ios 导航控制器问题(一):关闭导航栏默认的手势侧滑返回功能

      本文链接:https://www.haomeiwen.com/subject/wqwlattx.html