Я намагаюся додати 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
{
}