gpt4 book ai didi

ios - UIView pan 手势与系统手势冲突

转载 作者:行者123 更新时间:2023-12-01 18:34:36 25 4
gpt4 key购买 nike

我正在主视图上安装 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 指示器变暗。然后你需要滑动两次来关闭应用程序——第一次取消主页指示器,第二次关闭应用程序。第一次滑动两者兼而有之,调用我的平移手势识别器以及取消主页指示器。我不希望在第一次滑动期间调用我的平移手势识别器。

最佳答案

如果我理解正确,您不希望您的识别器在家庭指示器附近工作,因此您有两种选择:

  • 专门为此识别创建一个 View ,并将其底部布局到安全布局指南。
  • 实现手势识别器委托(delegate)方法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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com