簡體   English   中英

UIView pan 手勢與系統手勢沖突

[英]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]
   }

上面的代碼在幾秒鍾后使 home 指示器變暗。 然后你需要滑動兩次來關閉應用程序——第一次取消主頁指示器,第二次關閉應用程序。 第一次滑動兩者兼而有之,調用我的平移手勢識別器以及取消主頁指示器。 我不希望在第一次滑動期間調用我的平移手勢識別器。

如果我理解正確,您不希望您的識別器在家庭指示器附近工作,因此您有兩種選擇:

  1. 專門為此識別創建一個視圖,並將其底部布局到安全布局指南。
  2. 實現手勢識別器委托方法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)) }

第二種情況在下面的示例項目中實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM