Skip to content

Latest commit

 

History

History
44 lines (34 loc) · 1.73 KB

侧滑手势处理说明文档.md

File metadata and controls

44 lines (34 loc) · 1.73 KB

侧滑手势处理说明文档

重点说明: 侧滑手势处理的结果是:当前页面处于第一页的时候,才允许侧滑手势返回上一页。处于其他页面的时候,在屏幕边缘侧滑只会响应列表页面的左右滚动。这样做的目标便于用户停留在当前页面,进行列表的切换浏览。

如果产品经理不需要这样的特性,希望侧滑手势任何情况都能响应,就不需要参看此教程,不做任何处理即可。

UIViewController生命周期方法处理

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    //处于第一个item的时候,才允许屏幕边缘手势返回
    self.navigationController?.interactivePopGestureRecognizer?.isEnabled = (self.segmentedView.selectedIndex == 0)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    //离开页面的时候,需要恢复屏幕边缘手势,不能影响其他页面
    self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
}

JXSegmentedViewDelegate选中代理方法处理

func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
    self.navigationController?.interactivePopGestureRecognizer?.isEnabled = (self.segmentedView.selectedIndex == 0)
}

自定义导航栏返回Item,除了添加上面的代码,还需要下面的额外处理

  • 设置代理:
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
  • 设置手势代理方法
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}