剛剛花了一天的時間在鍵盤上敲打我的頭,我想我會分享我的診斷和解決方案。爲什麼我的視圖沒有使用gestureRecognizer來響應手勢?
情況:您可以在自己的應用中將自定義類CardView
的自定義視圖添加到封閉視圖myCards
中,並希望每個卡都響應點按手勢(例如,以指示您要放棄該卡)。
在你的ViewController:你開始有典型代碼
class MyVC : UIViewController, UIGestureRecognizerDelegate {
...
func discardedCard(sender: UITapGestureRecognizer) {
let cv : CardView = sender.view! as! CardView
...
}
在你myCards建設:
cv = CardView(card: card)
myCards.addSubview(cv)
cv.userInteractionEnabled = true
...
let cvTap = UITapGestureRecognizer(target: self, action: Selector("discardedCard:"))
cvTap.delegate = self
cv.addGestureRecognizer(cvTap)
我發現這裏的論點非常混亂,文檔不是在所有有幫助。目前尚不清楚target: argument
是指實現discardedCard(sender: UITapGestureRecognizer)
的類。如果你正在構建ViewController
中的識別器和卡片,這將是self
。如果您想將discardedCard
移動到您的自定義View類(例如)中,則在我的示例中將self
替換爲CardView
,包括在委託行上。
測試上面的代碼,我發現discardedCard函數從未被調用過。發生了什麼事?
順便說一句,您不需要指定點擊或觸摸的數量;默認值爲1和1:根據文檔,默認值爲1觸摸(手指)和1次輕擊:請參閱https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITapGestureRecognizer_Class/index.html# // apple_ref/OCC/instp/UITapGestureRecognizer/numberOfTouchesRequired – Opus1217