关闭 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 时忽略手势,您可以将其更改为任何您想要的。
是否可以关闭屏幕特定部分的向后滑动?特别是,我正在考虑使用这种方法:
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 时忽略手势,您可以将其更改为任何您想要的。