UILongPressGestureRecognizer не работает, но его замена на UITapGestureRecognizer работает нормально.Зачем? - PullRequest
5 голосов
/ 03 октября 2011

У меня есть UIImageView с прикрепленным UILongPressGestureRecognizer, который, кажется, никогда не обнаруживает длинный жест нажатия, независимо от того, как я настраиваю распознаватель жестов. Однако, если я поменяю его на UITapGestureRecognizer, , то будет работать отлично. Что может происходить?

Вот так я настраиваю UILongPressGestureRecognizer:

UIImageView* cellView = (UIImageView*)[view viewWithTag:5];
UILongPressGestureRecognizer* longPressGestureRec =
    [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(cellLongPress:)];
longPressGestureRec.numberOfTapsRequired = 1;
longPressGestureRec.numberOfTouchesRequired = 1;
longPressGestureRec.minimumPressDuration = 0.4;
[cellView addGestureRecognizer:longPressGestureRec];
[longPressGestureRec release];

Вот как выглядит cellLongPress:

-(void)cellLongPress:(UILongPressGestureRecognizer*)recognizer
{
    // This never gets called.
    NSLog(@"someone long pressed me");
}

Довольно просто, верно? Но пока не повезло, что все заработало. Есть идеи?

1 Ответ

23 голосов
/ 03 октября 2011

numberOfTapsRequired установлен на 1, что означает, что пользователь должен нажать один раз до , начиная длительное нажатие (палец вниз, палец вверх, палец вниз в течение 0,4 секунды, распознаваемый жест).

Измените numberOfTapsRequired на 0 (по умолчанию).

Для этого свойства документация просто гласит:

Количество нажатий на представление, необходимое для того, чтобы жест был распознан.

Но в комментариях к UILongPressGestureRecognizer.h написано:

Количество полных нажатий, требуемых до нажатия, чтобы жест был признал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...