我在主视图上安装了一个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]
}在几秒钟后,上面的代码会使主指示器变差。然后你需要滑动两次才能拒绝这个应用程序--第一个用来消除家用指示灯的,第二个是关闭应用程序的。第一次滑动两者都做,调用我的潘手势识别器以及消除家庭指示灯。我不希望我的潘手势识别器在第一次滑动时被调用。
发布于 2020-06-16 03:37:11
如果我正确地理解了你,你就不希望你的识别器在离家附近工作,所以你有两个选择:
shouldReceive touch:,并检查触摸是否在保存范围内:
函数gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldReceive touch: UITouch) -> Bool { let safeAreaFrame = view.bounds.inset(by: view.safeAreaInsets)返回safeAreaFrame.contains(touch.location(in: view)) }第二种情况在下面的示例项目中实现
https://stackoverflow.com/questions/62172075
复制相似问题