如何增加导航控制器向后滑动手势响应区域?

Posted

技术标签:

【中文标题】如何增加导航控制器向后滑动手势响应区域?【英文标题】:How to increase navigation controller back swipe gesture response area? 【发布时间】:2015-01-20 10:07:19 【问题描述】:

我发现使用导航控制器时,当用户从屏幕左侧滑动时,会引入默认的向后滑动手势,这会使应用返回到上一个视图。

除了从屏幕左侧开始之外,还有其他方法可以从屏幕上的任何点开始吗?

谢谢。

【问题讨论】:

只需添加您自己的手势识别器。 【参考方案1】:

只需添加您自己的手势识别器,并注意在 x 方向上速度较大且从左到右的手势。

    override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool 

        if (gestureRecognizer.isMemberOfClass(UIPanGestureRecognizer))
            let point:CGPoint = (gestureRecognizer as UIPanGestureRecognizer).velocityInView(self)
            if (abs(point.x) > abs(point.y))
                return true
            
        

在这里处理手势:

func handlePanGestureRecognizer(gesture: UIPanGestureRecognizer)
    let translation:CGPoint = gesture.translationInView(self)
    if(translation.x > 0)
       //its going from left to right...
       //...Do stuff over here to handle the gesture, for eg. push the view from the stack
    



【讨论】:

以上是关于如何增加导航控制器向后滑动手势响应区域?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

如果同时触发滑动手势和后退按钮,导航栏会变得很时髦

SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?

隐藏导航栏时如何启用滑动手势?

React Native 导航手势

向后滑动时嵌套推送动画可能导致导航栏损坏