2011-03-05 30 views
17

我有一個UILabel,我想讓它對觸摸做出反應。我試着在標籤上放一個按鈕,多虧了這個,我可以與按鈕進行交互。但是,按鈕不能完全透明,對嗎?我可以將按鈕的alpha設置爲0,02,但它仍然可以通過背景顯示。如何解決這個問題?也許我可以用其他方式設置屬性以使它們完全不可見?還是有其他解決方案?使UILabel易觸及

回答

50

首先,爲什麼不直接使用按鈕並將按鈕標題設置爲標籤的內容?

如果您不能/不想這樣做,您還可以在標籤上設置userInteractionEnabled = YES,然後在標籤中添加一個手勢識別器。

+0

請參閱Josh Brown在 – cynistersix 2012-05-10 22:18:25

+4

以下對「userInteractionEnabled = YES」的評論。謝謝! – Micah 2014-01-22 20:42:05

7

我經常這樣做:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)]; 
[myLabel addGestureRecognizer:tap]; 

我不知道這是否與標籤的工作原理,但我只是讓具有相同矩形透明的UIView,並把它放在上面。


好吧,我檢查,它只能在UIView的,不過呢,這樣做:

UIView *tapView = [[UIView alloc] initWithFrame:myButton.frame]; 

並把 「tapView」 在addGestureRecognizer法。

+10

的UITapGestureRecognizer確實對UILabels工作 - 你只需要設置userInteractionEnabled = YES上的UILabel。 – 2011-04-05 15:44:06

8

在斯威夫特:

label.userInteractionEnabled = true 
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed")) 
label.addGestureRecognizer(gestureRecognizer) 

讓您在行動點擊:

func labelPressed(){ 
    print("Label pressed") 
    //Your awesome code. 
}