[英]iOS: TapGestureRecognizer in UIView not fired
我創建了一個日期組件,並且在GestureRecognizer中遇到了問題。
第一行是帶有標簽的StackView。 如果我連接了TapGestureRecognizer,則會在觸摸時觸發。 以下幾行是Stackview中由標簽和圖像視圖組成的子視圖。 我可以將Recognizer添加到子視圖,標簽或圖像視圖。 它永遠不會被解雇,我確保已啟用userInteraction。
可能是什么問題呢?
這是我添加識別器的示例:
func addTap(){
dayLabel.isUserInteractionEnabled = true
imageView.isUserInteractionEnabled = true
isUserInteractionEnabled = true
tap1 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
tap2 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
tap3 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
dayLabel.addGestureRecognizer(tap1!)
imageView.addGestureRecognizer(tap2!)
addGestureRecognizer(tap3!)
}
@objc func handleTap(recognizer: UITapGestureRecognizer){
logger.debug("tap")
changeSelection()
}
您可以在此處找到一個歸結為問題的小演示項目: https : //github.com/ogezue/datedemo
我看到的問題是,您的視圖必須覆蓋有圖像和標簽,並且您UITapGestureRecognizer
所有視圖添加相同的UITapGestureRecognizer
,以便將其添加到最后一個對象說視圖(覆蓋有圖像和標簽),因此它可能無法獲得點擊事件
您需要UITapGestureRecognizer
三個不同的對象,您不能在不同的視圖上添加相同的點擊手勢
希望它可以解決您的問題
對於每個視圖( 標簽/圖像視圖),您都應該創建一個水龍頭對象,而不是將兩者同時添加到其中。 。 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.