[英]Swift: Getting target of UIPanGestureRecognizer
在我的ViewController.swift中,我有一個包含自定義UIViews的數組。 每次創建一個時,我都會向其添加一個UIPanGestureRecognizer,如下所示:
var panRecognizer = UIPanGestureRecognizer(target: self, action: "detectPan:")
newCard.gestureRecognizers = [panRecognizer]
這鏈接到我的detectPan(recognizer: UIPanGestureRecognizer)
函數,該函數處理運動。 但是,由於我有多個對象鏈接到該函數,所以我不確定如何確定輸入來自哪個對象。
有什么可以使用的(不存在的) recognizer.target
嗎? 我應該只在每個自定義UIView中處理平移嗎?
任何幫助,將不勝感激!
首先,應使用let
聲明panRecognizer
。
let panRecognizer = UIPanGestureRecognizer(target: self, action: "detectPan:")
其次,您不應設置任何UIView
的gestureRecognizers
屬性。 這是不好的做法,因為UIKit可能已經在幕后的視圖中添加了自己的手勢識別器。 如果隨后通過將[panRecognizer]
分配給該屬性來刪除這些識別器,則可能會出現意外的行為。 要添加平移手勢識別器,請執行以下操作:
newCard.addGestureRecognizer(panRecognizer)
然后,在您的detectPan(recognizer: UIPanGestureRecognizer)
方法中,您可以使用以下代碼檢測平移了哪個UIView
:
func detectPan(recognizer: UIPanGestureRecognizer) {
switch recognizer.view {
case self.customViewArray[0]:
// do something
case self.customViewArray[1]:
// do something else
case ... :
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.