/ / iOS - Rozpoznawanie wielu kliknięć - ios, tap, uitapgesturerecognizer

iOS - Rozpoznawanie wielu kliknięć - ios, tap, uitapgesturerecognizer

W mojej aplikacji mam wykryć pojedyncze, podwójne i potrójne dotknięcia, więc używam UITapGestureRecognizer. Używam następującego kodu:

    UITapGestureRecognizer *oneTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGestureOnAnimal:)];
oneTap.numberOfTapsRequired = 1;

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTapGestureOnAnimal:)];
doubleTap.numberOfTapsRequired = 2;
[doubleTap requireGestureRecognizerToFail:oneTap];

UITapGestureRecognizer* tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTripleTapGestureOnAnimal:)];
tripleTap.numberOfTapsRequired = 3;
[tripleTap requireGestureRecognizerToFail:doubleTap];

[self addGestureRecognizer:oneTap];
[self addGestureRecognizer:doubleTap];
[self addGestureRecognizer:tripleTap];

Problem polega jednak na tym, że zawsze wykrywa pojedyncze i podwójne dotknięcia. W ogóle nie wykrywa potrójnego uderzenia ... Czy ktoś może wskazać błąd, który robię, aby wykryć potrójne uderzenia?

Odpowiedzi:

17 dla odpowiedzi nr 1

Sprawdź to,

[oneTap requireGestureRecognizerToFail:doubleTap];
[oneTap requireGestureRecognizerToFail:tripleTap];
[doubleTap requireGestureRecognizerToFail:tripleTap];

Zmieniłeś kurki w metodach i tynie robili drugiej linii powyżej. Idealnie jedno dotknięcie powinno zostać wykryte tylko wtedy, gdy podwójne dotknięcie i potrójne dotknięcie nie powiedzie się. Dwukrotne dotknięcie powinno zostać wykryte, gdy potrójne dotknięcie zawodzi.


0 dla odpowiedzi nr 2

Zmień swoje 2 wywołania requireGestureRecognizerToFail na:

[oneTap requireGestureRecognizerToFail:tripleTap];
[oneTap requireGestureRecognizerToFail:doubleTap];
[doubleTap requireGestureRecognizerToFail:tripleTap];