簡體   English   中英

Swift:獲取UIPanGestureRecognizer的目標

[英]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:")

其次,您不應設置任何UIViewgestureRecognizers屬性。 這是不好的做法,因為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.

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