2014-03-03 26 views
1

我在視圖中有一個UIButton,並在該按鈕上有一個UILabel(TTTAttributedLabel)。 (https://github.com/mattt/TTTAttributedLabel)(雖然,這是不相關的TTTAttributedLabel自定義類的直接問題)如何在UIButton中觸發目標?

這與的UILabel觸摸執行一些動作。如果不喜歡觸摸座標將其轉發到超與相應的方法如下:

[super touchesBegan:touches withEvent:event]; 
    [super touchesMoved:touches withEvent:event]; 
    [super touchesEnded:touches withEvent:event]; 
    [super touchesCancelled:touches withEvent:event]; 

我發現在這種情況下正在按下下面的按鈕。我還看到,UIButton中的所有這些方法都被完美調用。我也登錄UITouch對象來查看它們是否匹配。

問題是,設置爲UIButton的操作未被調用(即使對於UIControlEventTouchDown)。什麼觸發了這些行爲?我認爲與touchesEnded匹配的touchesBegan應該已經爲目標動作添加了選擇器,並將其添加到該按鈕中。

回答

0

觸摸觸發控件事件,並且我會說你的按鈕不會僅僅因爲按鈕上有標籤而接觸到觸摸。

有兩種方法可以解決這個問題。首先,可能是首選的方法是使用atributedTitle proprety一個UIButton代替糖化附加標籤的地方是沒有必要的: https://developer.apple.com/library/ios/documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instm/UIButton/attributedTitleForState

另一種方式是深入鑽研UIControl,可能繼承它,然後雖然這要比上面的解決方案複雜得多: https://developer.apple.com/library/ios/documentation/uikit/reference/uicontrol_class/reference/reference.html

+0

該按鈕接收觸摸,因爲我將它劃分子類並在觸摸事件中看到NSLog輸出。不知何故,轉發觸摸可能不匹配...但他們似乎匹配的對象ID和座標是相同的日誌。 (我不能直接使用按鈕的title屬性,因爲標籤中有可點擊的單詞。) – frankish

相關問題