UIView pan Gesture 与系统手势冲突
UIView pan Gesture conflict with system gesture
我正在主视图上安装一个 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]
}
上面的代码在几秒钟后使主页指示灯变暗。然后您需要滑动两次以关闭该应用程序——第一次滑动以取消主页指示器的亮度,第二次滑动以关闭该应用程序。第一次滑动会同时执行这两项操作,调用我的平移手势识别器并取消主页指示器的亮度。我不想在第一次滑动时调用我的平移手势识别器。
如果我没理解错的话,你不希望你的识别器在家指示器附近工作,所以你有两个选择:
- 专门为此识别创建一个视图并将其底部布局到安全布局指南。
实现手势识别委托方法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
我正在主视图上安装一个 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]
}
上面的代码在几秒钟后使主页指示灯变暗。然后您需要滑动两次以关闭该应用程序——第一次滑动以取消主页指示器的亮度,第二次滑动以关闭该应用程序。第一次滑动会同时执行这两项操作,调用我的平移手势识别器并取消主页指示器的亮度。我不想在第一次滑动时调用我的平移手势识别器。
如果我没理解错的话,你不希望你的识别器在家指示器附近工作,所以你有两个选择:
- 专门为此识别创建一个视图并将其底部布局到安全布局指南。
实现手势识别委托方法
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