Próbuję dodać 2 UITapGestureRecognizers
do widoku, jedno dla zdarzeń z pojedynczym dotknięciem i jedno dla zdarzeń dotknięcia podwójnego. Rozpoznawanie z pojedynczym dotknięciem działa zgodnie z oczekiwaniami (samodzielnie). Ale wydaje mi się, że nie mogę uruchomić rozpoznawania podwójnego dotknięcia.
Próbowali eksperymentować z właściwości, takie jak: cancelsTouchesInView
, delaysTouchesBegan
a delaysTouchesEnded
jednak nadal nie działa.
Gdy stuknę dwukrotnie, aparat rozpoznawania pojedynczego dotknięcia będzie zawsze aktywowany, a zdarzenie podwójnego dotknięcia zostanie również wysłane do super widoku. Ale niestandardowy aparat rozpoznawania podwójnego dotknięcia nie wydaje się w ogóle otrzymywać powiadomień.
Dokumentacje wydają się sugerować, że wymienione powyżej 3 właściwości można wykorzystać do tego celu. Ale po prostu nie jestem pewien, jakie wartości należy ustawić i na których aparatach rozpoznających (pojedynczy, podwójny lub oba). Mam nadzieję, że ktoś zaznajomiony z tym może pomóc.
Poniżej znajduje się najnowszy zaktualizowany blok kodu.
// ****** 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
{
}