我正在主视图上安装 UIPanGestureRecognizer,如下所示:
panGesture = UIPanGestureRecognizer(target: self, action: #selector(previewPanned(_:))
panGesture?.minimumNumberOfTouches = 1
panGesture?.maximumNumberOfTouches = 1
view.addGestureRecognizer(panGesture!)
问题是它会与主页指示器上的系统滑动手势同时识别以关闭应用程序。如何避免这种冲突?
编辑:当我使用以下代码调暗主页按钮指示灯时出现问题 -
override var prefersHomeIndicatorAutoHidden: Bool {
return false
}
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return [.bottom, .top]
}
上面的代码在几秒钟后使 home 指示器变暗。然后你需要滑动两次来关闭应用程序——第一次取消主页指示器,第二次关闭应用程序。第一次滑动两者兼而有之,调用我的平移手势识别器以及取消主页指示器。我不希望在第一次滑动期间调用我的平移手势识别器。
最佳答案
如果我理解正确,您不希望您的识别器在家庭指示器附近工作,因此您有两种选择:
shouldReceive touch:
并检查触摸是否在保存范围内:func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
let safeAreaFrame = view.bounds.inset(by: view.safeAreaInsets)
return safeAreaFrame.contains(touch.location(in: view))
}
第二种情况在以下示例中实现 project
关于ios - UIView pan 手势与系统手势冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62172075/