UITapGestureRecognizer - одиночное касание и двойное касание

Я пытаюсь добавить 2 UITapGestureRecognizers в представление, одно для однократного касания, а второе для событий двойного касания. Распознаватель одиночного касания работает должным образом (сам по себе). Но, похоже, я не могу заставить работать распознаватель двойного касания.

Пытались поэкспериментировать с такими свойствами, как: cancelsTouchesInView , delaysTouchesBegan и delaysTouchesEnded , но все равно не работает.

При двойном касании всегда будет активирован распознаватель одиночного касания, а событие двойного касания также будет отправлено в супер-просмотр. Но пользовательский распознаватель двойного касания, похоже, вообще не уведомляется.

Судя по документации, для этой цели можно использовать 3 упомянутых выше свойства. Но я просто не уверен, какие значения следует установить и на каких распознавателях (одинарных, двойных или обоих). Надеюсь, кто-нибудь, знакомый с этим, может помочь.

Ниже приводится последний обновленный блок кода.

// ****** gesture recognizers ******

- (void)addSingleAndDoubleTapGestureRecognizersToView:(UIView *)view
{
    // single tap    
    UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector(handleSingleTapOnView:)];                                 
    [singleTapRecognizer setNumberOfTouchesRequired:1];
    [view addGestureRecognizer: singleTapRecognizer];

    // double tap 
    UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector (handleDoubleTapOnView:)];        
    [doubleTapRecognizer setNumberOfTouchesRequired:2];         
    [singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];
    [view addGestureRecognizer: doubleTapRecognizer];         
}

- (void)handleSingleTapOnView:(id)sender
{

}

- (void)handleDoubleTapOnView:(id)sender
{

}
153
задан TheNeil 16 May 2019 в 00:58
поделиться