2010-09-09 35 views
2

我說的是用相同的手指在屏幕上的兩個單獨的觸摸很難捕獲UIButton子類上的雙擊。 (時間延遲捕捉雙擊)

我想我有這個編碼權。但實際上在我的iPad上生成雙擊幾乎是不可能的。是否有可能增加單擊和雙擊之間的時間間隔,因此更容易觸發。我非常快速地進行雙擊,並將其捕獲爲兩次單擊。只有有時我很幸運地觸發了雙擊。我把我的UIButton項目的子類放到scrollview中。

反正我的UIButton的子類實現:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

UITouch *touch = [[event allTouches] anyObject]; 

NSLog(@"Touch count:%d",touch.tapCount); 

if (touch.tapCount == 1) 
{ 
    //Do things for one touch 
} 
else if (touch.tapCount == 2) 
{ 
    //Do things for double touch 
} 
} 

這是捕獲事件。這就是爲什麼我認爲我的代碼是正確的,我只是找不到與UIEvent有關的任何事情,以及決定發生多少觸摸的原因。我在一個不同的UIView中測試了這個相同的東西,它的工作和預期完全一樣。

回答

3

您的代碼同時檢測視圖中的兩個手指,而不是手指上的快速序列(雙擊)。

如果您想檢測雙擊,最簡單的方法是使用手勢識別器。只要做你sublass的設置,添加以下代碼:

UITapGestureRecognizer *singleFingerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerDoubleTap:)]; 
singleFingerDoubleTap.numberOfTouchesRequired = 1; 
singleFingerDoubleTap.numberOfTapsRequired = 2; 
[self addGestureRecognizer:singleFingerDTap]; 
[singleFingerDTap release]; 

和實施喊得將雙擊的方法:

-(void)handleSingleFingerDoubleTap:(id)sender { 
    //Do stuff 
} 
+0

你確定,因爲我在類中試過這個我只是一個UIView,它捕獲了一個'雙'水龍頭,就像我所期望的。但無論如何,關於如何抓住雙擊的任何想法? – 2010-09-09 19:53:59

+0

我剛剛編輯答案給你一個例子 – 2010-09-09 19:55:27

+0

唯一的警告是,手勢識別器只適用於iOS 3.2及更高版本,所以此代碼不適用於3.0和3.1設備。 – 2010-09-09 19:57:06

0

你不是要求[super touchesBegan:touches withEvent:event]

+0

是的,我知道,但我的日誌聲明應該顯示雙擊。這真的很難做到。生病了,看看我的運氣。 – 2010-09-09 19:59:44

+0

這完全沒有幫助 – 2010-09-09 20:13:22