关闭 iOS 向后滑动

Turning off iOS backswipe

是否可以关闭屏幕特定部分的向后滑动?特别是,我正在考虑使用这种方法:

func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer!) -> Bool {
    return false;
}

我在想识别用户按下了屏幕的哪一部分,如果在某个区间内,我会return为真,否则为假。不确定如何拾取用户按下的位置。

我假设您在谈论 UINavigationController 提供的功能。

首先你的 class 应该符合 UIGestureRecognizerProtocol 这样的东西:

class MyController: UIViewController, UIGestureRecognizerProtocol

然后你需要注册成为导航控制器的委托,所以可能在你的 viewDidLoad 或 viewWillAppear(取决于需要)中你有这个:

self.navigationController?.interactivePopGestureRecognizer?.delegate = self

然后您可以使用以下方法检查手势在视图中的何处开始:

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    let location = gestureRecognizer.location(in: self.view)
    if location.y > 500 {
        return false
    }

    return true
}

显然,这只是一个测试用例,当它在垂直方向超过 500 时忽略手势,您可以将其更改为任何您想要的。