簡體   English   中英

iOS:未觸發UIView中的TapGestureRecognizer

[英]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.

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