2010-10-03 83 views
1

我正在嘗試製作一個由觸摸控制的iPhone應用程序。我還希望在用戶雙擊時啓動加電。這是我到目前爲止有:UITapGestureRecognizer停止觸摸已結束

UITapGestureRecognizer *powerRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(usePower)]; 
powerRecognizer.delaysTouchesEnded = NO; 
powerRecognizer.numberOfTapsRequired = 2; 
powerRecognizer.numberOfTouchesRequired = 1; 
[self.view addGestureRecognizer:powerRecognizer]; 
[powerRecognizer release]; 

但問題是,當我雙擊,我touchesEnded:withEvent:方法只能觸發一次,但我touchesBegan:withEvent:方法閃光兩次。由於touchesBegan:設置了一個定時器,並且touchesEnded:使其無效,則當touchesEnded:僅觸發一次時,定時器仍在運行。我怎樣才能解決這個問題?

+0

爲什麼你使用觸摸開始/結束,當你有一個手勢識別器的方法usePower的設置? – 2010-10-03 21:25:50

+0

我認爲傑克希望能夠做到不止雙擊。例如,使用觸摸在屏幕上拖動視圖。 – 2010-10-03 21:38:10

回答

2

這裏是我的檢測雙水龍頭的解決方案:

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

UITouch *touch = [touches anyObject]; 

if([touch tapCount] == 2) { 
// do sth 
} 

} 
2

將手勢識別器添加到視圖會更改幾種觸摸處理方法的行爲,包括touchesEnded:WithEvent:

從上面的鏈接:

觀察後, 觸摸對象的附視圖,或 其配置的輸送,否則是 受cancelsTouchesInView, delaysTouchesBegan和 delaysTouchesEnded性質。

1

在斯威夫特,可以避開標準的行爲,讓UITouch事件傳播到瀏覽和其子,即使一個手勢被識別與

recognizer.cancelsTouchesInView = false 

兩個touchesBegantouchesEnded將被調用。