2013-08-16 115 views
1

讓按鈕能夠同時執行Touch Up Inside動作和Touch Down Repeat動作的最佳方式是什麼?有點像iPhone上的主頁按鈕:一鍵進入主屏幕,但兩個快速點擊打開多任務欄。現在我的按鈕有兩種方法掛鉤,但Touch Up Inside方法(不出所料)會在Touch Down Repeat發生之前被調用。UIButton同時觸摸內部和觸摸重複?

我可以想出幾種方法來解決這個問題(讓Touch Up Inside方法等待一秒鐘,看看在執行之前是否有另一次點擊,第一次點擊後有第二個按鈕隱藏到位,等等),但它們都顯得有點破綻,並且對性能損失和錯誤開放。我發現tapCount屬性,但它是UITouch而不是UIButton,所以if([_buttonAddItems tapCount] > 1) {} else if([_buttonAddItems tapCount] == 1),這看起來是最有效的方法,但不起作用。

是否有這種事情的最佳做法?或者,如果沒有,有沒有人有一個首選的方式來完成這項工作?

回答

4

嘗試從您的按鈕斷開兩個觸摸事件,並將兩個輕擊手勢識別器掛鉤。這裏是一個link to an answer,介紹如何設置兩個手勢識別,使其中的一種認識一個水龍頭,而另一個識別雙擊:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)]; 
singleTap.numberOfTapsRequired = 1; 
[myButton addGestureRecognizer:singleTap]; 

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)]; 
doubleTap.numberOfTapsRequired = 2; 
[myButton addGestureRecognizer:doubleTap]; 
// This is the "secret sauce": 
[singleTap requireGestureRecognizerToFail:doubleTap]; 
+0

我從來沒有與GestureRecognizers之前玩過,但是這看起來就像我在找什麼,謝謝! – Nerrolken

+0

在我的應用程序中測試過,它的工作原理!再次感謝你! – Nerrolken