2012-06-18 2 views
1

Я использую два разных TapGestureRecognizer для обработки как одного, так и двойного нажатия на экране. Это код:requireGestureRecognizerToFail не работает

UITapGestureRecognizer *tapGR =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)]; 
    [tapGR setDelegate:self]; 
    [tapGR setNumberOfTapsRequired:1]; 
    [self addGestureRecognizer:tapGR]; 


    UITapGestureRecognizer *doubleTapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)]; 
    [doubleTapGR setNumberOfTouchesRequired:2]; 
    [self addGestureRecognizer:doubleTapGR]; 

    [tapGR requireGestureRecognizerToFail : doubleTapGR]; 

    [tapGR release]; 
    [doubleTapGR release]; 

Даже если я указал, что [tapGR requireGestureRecognizerToFail: doubleTapGR] селектор "handleTap" выполняется. Где ошибка?

ответ

5

Вы сделали ошибку! Вы использовали метод setNumberOfTouchesRequired для doubleTapGR вместо setNumberOfTapsRequired. Вот исправленный код:

UITapGestureRecognizer *tapGR =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)]; 
[tapGR setDelegate:self]; 
[tapGR setNumberOfTapsRequired:1]; 
[self addGestureRecognizer:tapGR]; 


UITapGestureRecognizer *doubleTapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)]; 
[doubleTapGR setNumberOfTapsRequired:2]; 
[self addGestureRecognizer:doubleTapGR]; 

[tapGR requireGestureRecognizerToFail : doubleTapGR]; 

[tapGR release]; 
[doubleTapGR release]; 

С наилучшими пожеланиями;)

+0

Да, я понял это несколько минут назад .. Во всяком случае я Я приму свой ответ. – Lolloz89

+0

Я делаю что-то неправильно, если у меня есть небольшая задержка, когда я просто касаюсь? – Markus

1

Я думаю, что вы, возможно, опустили:

[doubleTapGR setDelegate:self]; 
+1

я самостоятельно ответил на мой вопрос, извините, я действительно тупой :( – Lolloz89

0

Я понял, что я на самом деле тупой :)

я писал:

[doubleTapGR setNumberOfTouchesRequired:2]; 

Вместо:

[doubleTapGR setNumberOfTapsRequired:2]; 

Вы можете удалить thi ответ. Извините StackOverflow.

 Смежные вопросы

  • Нет связанных вопросов^_^