首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIView pan手势与系统手势的冲突

UIView pan手势与系统手势的冲突
EN

Stack Overflow用户
提问于 2020-06-03 11:45:42
回答 1查看 457关注 0票数 1

我在主视图上安装了一个UIPanGestureRecognizer,如下所示:

代码语言:javascript
复制
  panGesture = UIPanGestureRecognizer(target: self, action: #selector(previewPanned(_:))
  panGesture?.minimumNumberOfTouches = 1
  panGesture?.maximumNumberOfTouches = 1               
  view.addGestureRecognizer(panGesture!)

问题是,它被识别的同时,系统滑动手势,在家庭指示器,以拒绝应用程序。我该如何避免这场冲突?

编辑:当我用以下代码调暗主按钮指示器时,问题就出现了-

代码语言:javascript
复制
   override var prefersHomeIndicatorAutoHidden: Bool {
      return false
   }

   override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
       return [.bottom, .top]
   }

在几秒钟后,上面的代码会使主指示器变差。然后你需要滑动两次才能拒绝这个应用程序--第一个用来消除家用指示灯的,第二个是关闭应用程序的。第一次滑动两者都做,调用我的潘手势识别器以及消除家庭指示灯。我不希望我的潘手势识别器在第一次滑动时被调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-16 03:37:11

如果我正确地理解了你,你就不希望你的识别器在离家附近工作,所以你有两个选择:

  1. 专门为此识别的视图创建一个视图,并将其底部布局到安全布局指南。
  2. 实现手势识别器委托方法shouldReceive touch:,并检查触摸是否在保存范围内: 函数gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldReceive touch: UITouch) -> Bool { let safeAreaFrame = view.bounds.inset(by: view.safeAreaInsets)返回safeAreaFrame.contains(touch.location(in: view)) }

第二种情况在下面的示例项目中实现

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62172075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档