【iOS翻譯】對UIGestureRecognizer多種手勢傻傻分不清

来源:https://www.cnblogs.com/xjf125/archive/2019/12/01/11965274.html
-Advertisement-
Play Games

UIGestureRecognizerDelegate A set of methods implemented by the delegate of a gesture recognizer to fine-tune an app’s gesture-recognition behavior. 一 ...


 UIGestureRecognizerDelegate

  A set of methods implemented by the delegate of a gesture recognizer to fine-tune an app’s gesture-recognition behavior.  

  一個設置手勢識別器委托實現的方法,用於微調應用程式的手勢識別行為。

  Overview

  The delegates receive messages from a gesture recognizer, and their responses to these messages enable them to affect the operation of the gesture recognizer or to specify a relationship between it and another gesture recognizer, such as allowing simultaneous recognition or setting up a dynamic failure requirement.

  這些委托從手勢識別器接收消息,它們會響應這些消息以能夠影響到手勢識別器的操作或指定它與另外一個手勢識別器的關係,例如,允許同時識別或設置動態的失敗需求。

  An example of a situation where dynamic failure requirements are useful is in an app that attaches a screen-edge pan gesture recognizer to a view. In this case, you might want all other relevant gesture recognizers associated with that view's subtree to require the screen-edge gesture recognizer to fail so you can prevent any graphical glitches that might occur when the other recognizers get canceled after starting the recognition process. To do this, you could use code similar to the following:

  在應用程式中動態的失敗需求例子,應用程式將屏幕邊緣的pan手勢綁定到一個視圖上,在這種情況下,您可能希望與該視圖的子樹關聯的所有其他相關手勢識別器都要求屏幕邊緣手勢識別器失敗,這樣就可以防止在啟動識別過程後取消其他識別器時可能出現的任何圖形錯誤。如果想做到這一點,你可以使用類似於下麵的代碼:

let myScreenEdgePanGestureRecognizer = UIScreenEdgePanGestureRecognizer(target: self, action:#selector(handleScreenEdgePan))
myScreenEdgePanGestureRecognizer.delegate = self
    // Configure the gesture recognizer and attach it to the view.
 
...
 
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    guard let myView = myScreenEdgePanGestureRecognizer.view,
          let otherView = otherGestureRecognizer.view else { return false }
    
    return gestureRecognizer == myScreenEdgePanGestureRecognizer &&
           otherView.isDescendant(of: myView)}

gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)

  Asks the delegate if two gesture recognizers should be allowed to recognize gestures simultaneously.

  詢問委托代理是否允許兩個手勢識別器同時識別手勢。

optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool

 Return Value

  true to allow both gestureRecognizer and otherGestureRecognizer to recognize their gestures simultaneously. The default implementation returns false—no two gestures can be recognized simultaneously.

  如果為真的時候允許手勢識別器與其他手勢識別器同時識別他們的手勢。預設實現返回false,不能同時識別兩個手勢。

 Discussion

  This method is called when recognition of a gesture by either gestureRecognizer or otherGestureRecognizer would block the other gesture recognizer from recognizing its gesture. Note that returning true is guaranteed to allow simultaneous recognition; returning false, on the other hand, is not guaranteed to prevent simultaneous recognition because the other gesture recognizer's delegate may return true.

  當手勢識別器或其他手勢識別器對某個手勢的識別會阻止其他手勢識別器識別其手勢時,就會調用此方法。註意,返回true保證允許同時識別;另一方面,返回false不能保證防止同時識別,因為其他手勢識別器的委托可能返回true。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在dlib以及face_recognition通過pip安裝成功之後(如何通過pip進行安裝,在博主的上一篇隨筆中有提及),在pycharm中無法導入。 ...
  • 近些年機器視覺應用一直是個很火的方向,想象一下機器如果能長上“眼睛”,是不是就可以做一些人類才能做的事情,因此機器視覺是人工智慧實現的一個重要基礎。痞子衡當年碩士畢業論文課題就是工業相機圖像處理相關的,算是機器視覺系統的前端核心。遙想十年以前,想要從事機器視覺系統的開發一直是比較複雜的,需要開發者有... ...
  • 如圖,這個是看視頻時,最後的作業,除了客戶端未使用select實現外,其它的要求都有簡單實現。 服務端代碼如下: 客戶端代碼還是之前的版本,沒有使用select實現: ...
  • 最近,在Medium上出現了一個採訪問題:如何向奶奶解釋SQL和NoSQL之間的區別。我認為作者使用自己的結構化家譜來比較sql和nosql之間的差異。寫作非常好,但是有點尷尬。面試官沒有時間聽你的話。我個人認為sql和nosql之間的區別消失了。一兩個句子無法概括,更不用說告訴奶奶了,因此,如果您 ...
  • 資料庫 1、創建資料庫 2、查看資料庫 3、刪除資料庫 表 1、創建表 2、刪除表 3、重命名錶 列 1、添加列 2、刪除列 3、重命名列 約束 1、主鍵 視圖 1、創建視圖 2、刪除視圖 存儲過程 1、創建存儲過程 2、刪除存儲過程 3、執行存儲過程 4、重命名存儲過程 5、帶有輸出參數的存儲過程 ...
  • 存儲過程(特定功能的SQL語句集) 一組為了完成特定功能的SQL語句集,存儲在資料庫中,經過第一次編譯後再次調用不需要編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中一個重要對象。 1.創建存儲過程: create procedure 存儲過程名稱 ( ...
  • --創建資料庫使用預設的方式 create database 資料庫名稱 --創建一個完整的資料庫,帶有主文件和日誌文件 create database 資料庫名稱 --邏輯名稱 on primary( name='資料庫名稱', --物理名稱 filename='d:\名字.mdf', size= ...
  • SELECT和SET在SQL SERVER中都可以用來對變數進行賦值,但其用法和效果在一些細節上有些不同。 1. 在對變數賦值方面,SET是ANSI標準的賦值方式,SELECT則不是。這也是SET方式被推薦使用的原因之一。 2. SELECT可以一次對多個變數進行賦值,而SET一次只能對一個變數賦值 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...