Mam dwa UIGestureRecognizers
dla widoku, który rozpoznaje oba jednocześnie. Chciałbym zakończyć lub anulować pierwszy gest, aby zabić również drugi gest. Czy istnieje sposób na zabicie aktywnego gestu, tj. wymuszenie anulowania aktywnego aparatu rozpoznawania gestów?
2 odpowiedzi
Ponieważ chcesz zabić gest dodatkowy tylko po zakończeniu lub anulowaniu gestu głównego, zrób to w obsłudze gestów gestu głównego.
- (void)handleGesture:(UIGestureRecognizer*)gesture {
...
if ( gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerCancelled ) {
secondaryGesture.enabled = NO;
secondaryGesture.enabled = YES;
}
}
Wydaje się, że to jedyny sposób na anulowanie gestu.
requireGestureRecognizerToFail:
[secondaryGesture requireGestureRecognizerToFail:primaryGesture];
To zabije gest wtórny po pomyślnej identyfikacji gestu podstawowego. Takie narzędzie nie jest dostępne, jeśli główny gest zostanie anulowany. Prawdopodobnie możesz przestawić flagę enabled
dodatkowego gestu na NO
i YES
w obsłudze gestów głównego gestu na UIGestureRecognizerStateCancelled
, ale to nie wydaje się eleganckie.
W zależności od gestów możesz chcieć mieć oba. Natknąłem się na problem, w którym gesty przeszkadzały sobie nawzajem i przez chwilę miałem coś podobnego do tego rozwiązania. Dwa gesty, których próbowałem użyć, to gest uszczypnięcia i obrócenia. Idealnie chciałem, aby użytkownik mógł płynnie przechodzić między nimi bez konieczności anulowania jednego, który udało mi się osiągnąć. Opisałem jak to zrobiłem tutaj i podałem film instruktażowy Mam nadzieję, że to może komuś pomóc.
Podobne pytania
Nowe pytania
ios
iOS to mobilny system operacyjny działający na urządzeniach Apple iPhone, iPod touch i iPad. Użyj tego tagu [ios] w przypadku pytań związanych z programowaniem na platformie iOS. Użyj powiązanych tagów [objective-c] i [swift] w przypadku problemów specyficznych dla tych języków programowania.