2010-10-03 2 views
1

Я пытаюсь создать приложение для iPhone, которое управляется прикосновением. Я также хочу активировать активацию, когда пользователь выполняет двойное нажатие. Вот то, что я до сих пор:UITapGestureRecognizer Stops touchesEnded

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

Я думаю, что Джейк хочет сделать больше, чем двойной кран. Например, перетащите вид вокруг экрана, используя прикосновение. –

ответ

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

В Swift, вы можете избежать стандартного поведения, и пусть событие UITouch распространяются для просмотра и ее ребенка, даже если жест распознан с

recognizer.cancelsTouchesInView = false 

Оба touchesBegan и touchesEnded будет называться.