在我的应用中,我想检测向上滑动。当然,我在视图控制器的UISwipeGestureRecognizer
添加了view
。
正如预期的那样,该识别器可以很好地检测滑动。但关于这一点的一个坏处是也检测到从底部边缘的滑动。当用户想要打开控制中心时:
也会检测到滑动。我不希望这种情况发生。
换句话说,我想检测所有向上滑动,除了屏幕下边缘的滑动。
我想我也可以使用UIEdgePanGestureRecognizer
来检测边缘滑动。并且当检测到这种滑动时,禁用滑动识别器。但这几乎不可能吗?因为谁知道哪个识别器首先检测到手势?
我该怎么做?
P.S。我想我需要使用requireGestureRecognizerToFail
,但文档非常糟糕,我无法完全理解。
答案 0 :(得分:0)
您可以尝试隐藏状态栏,这样就不会出现意外的控制中心开口。当用户从底部滑动时,会出现一个箭头。如果仍然想要打开控制中心,他/她需要再次滑动。
尝试以下代码
override func prefersStatusBarHidden() -> Bool {
return true
}
还有一个解决方案,但我不确定Apple是否会对此感到愤怒。
在.plist中有一个名为“View controller-based status bar appearance”的值。将其设置为NO
答案 1 :(得分:0)
在这种情况下,您应该使用此委托方法
optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
如果您不希望识别器同时触发,请检查otherGestureRecognizer
并返回NO
。
尝试此操作,查看系统是否使用您要避免的手势识别器调用此方法。如果没有,请考虑添加自己的UIScreenEdgePanGestureRecognizer
和UIRectEdge.Bottom
,以便对其进行检查。