2011-07-26 36 views
3

我有一個按鈕叫myButton,我給它一個UIGestureRecognizer這樣,當按下用兩個手指myButtonIBAction只運行:引用一個按鈕時動作的發件人是UIGestureRecognizer

UIGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerTap:)]; 
[(UITapGestureRecognizer *) tapper setNumberOfTouchesRequired:1]; 
[newTaskButton addGestureRecognizer:tapper]; 

之前要添加手勢識別器,我可以使用sender來引用剛按下的按鈕,但現在sender現在是手勢識別器。我仍然需要引用按下的按鈕...有什麼辦法可以這麼做嗎?返回使用手勢識別器的簡單方法可能是什麼?謝謝!

+2

與問題無關:如果將聲明更改爲'UITapGestureRecognizer * tapper',則不需要將其轉換爲下一行。 – Anna

+0

哦,這真的很漂亮! – hemlocker

回答

16

UIGestureRecognizer類有一個view屬性,代表手勢識別器附加到的視圖,在您的情況下,該按鈕。

- (void)twoFingerTap:(UIGestureRecognizer *)sender { 
    UIButton *myButton = (UIButton *)sender.view; 
} 
+0

感知!謝謝! – hemlocker

+1

@ghostware歡迎:) – albertamg

+0

現在,我不相信它會影響應用程序的性能,但是當我告訴它設置'[sender view]'的'title'屬性時,我得到警告'UIView'可能不會響應'setTitle'。我知道這是因爲編譯器不知道'[發送者視圖]'是'UIButton'。有什麼方法可以讓編譯器放心,這樣警告就消失了嗎? – hemlocker

相關問題