Swift -- UIGestureRecognizer

手勢識別器是Swift中處理觸摸或點按事件最簡單的方式,通常為一個 View 綁定多個不同類型的手勢識別器來處理不同的觸摸或點按事件。
系統(tǒng)使用模式匹配來監(jiān)測觸摸或點擊事件是否符合某種類型的手勢,當某種手勢匹配成功時,與當前 View 綁定的該類型的手勢識別器對象會通知指定的 Target,隨后調(diào)用 Target 中定義的 ActionTarget-Action Mechanism

Gesture recognizer notifying its target

手勢識別器有兩種類型:離散型和連續(xù)型。一個離散的手勢識別器在手勢被識別后只調(diào)用一次 Action。而連續(xù)的手勢識別器在滿足其初始識別條件之后,將多次調(diào)用 Action,并在手勢事件中的信息發(fā)生更改時發(fā)出通知。例如,每次觸摸位置改變時,UIPanGestureRecognizer對象都會調(diào)用 Action。

  • 配置手勢識別器

通過代碼進行配置 -- 創(chuàng)建所需的手勢控制器對象,配置 TargetAction,將該手勢識別器添加到所需的 View

let swipeDownGestureRecognizer = UISwipeGestureRecognizer()
swipeDownGestureRecognizer.addTarget(self, action: #selector(someMethod))
swipeDownGestureRecognizer.direction = .down
view.addGestureRecognizer(swipeDownGestureRecognizer)

在故事板中,將手勢識別器拖動到視圖中
在合適的對象中實現(xiàn)識別手勢時調(diào)用的動作方法,樣式如下

@IBAction func myActionMethod(_ sender: UIGestureRecognizer)

將該動作方法連接到手勢識別器 -- 您可以在Interface Builder中創(chuàng)建此連接,方法是右鍵單擊手勢識別器并將其發(fā)送的操作選擇器連接到動作方法所在的對象。

  • 對手勢的響應(yīng)

對于離散的手勢,手勢的 Action 類似于 UIButtonAction。一旦 Action 被調(diào)用,就可以執(zhí)行任何適合該手勢的任務(wù)。對于連續(xù)的手勢,手勢的 Action 可以響應(yīng)對手勢的識別,但是它也可以在識別手勢之前跟蹤事件。跟蹤事件可以讓您創(chuàng)建更具交互性的體驗。例如,您可以使用來自UIPanGestureRecognizer對象的更新來重新定位應(yīng)用程序中的內(nèi)容。

手勢識別器通過state屬性來傳達識別器當前的識別狀態(tài)。對于識別連續(xù)手勢的識別器,state的值有UIGestureRecognizer.State.began, UIGestureRecognizer.State.changed, UIGestureRecognizer.State.ended, UIGestureRecognizer.State.cancelledAction 通過識別器的狀態(tài)來決定不同狀態(tài)下的動作。
例如,可以使用開始狀態(tài)和更改狀態(tài)對內(nèi)容進行臨時更改,使用結(jié)束狀態(tài)使這些更改永久不變,并使用取消狀態(tài)放棄更改。在采取行動之前,一定要檢查手勢識別器的狀態(tài)屬性值。

不同類型的手勢識別器的使用教程:

  • 參考文獻

Handling UIKit Gestures

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容