W mojej aplikacji dodałem nowe urządzenia do rozpoznawania gestów, które są dostępne w pakiecie SDK 3.2. Wszystko wydaje się działać poprawnie, a czas reakcji na ekranie był bardzo szybki. Ale z jakiegoś powodu, dodając requireGestureRecognizerToFail
do niektórych moich gestów, pojawia się bardzo widoczne opóźnienie po uruchomieniu gestu. Poniżej znajduje się fragment kodu, którego używam do tworzenia Gesture Recognizers. Czy ktoś wie, dlaczego jest opóźnienie i jak mogę to naprawić? Używam requireGestureRecognizerToFail
, aby zapobiec wyzwalaniu gestu SingleTap
, gdy użytkownik wykonuje DoubleTap
.Urządzenie Gest Recognizer firmy iPad - opóźniona odpowiedź
- (void)createGestureRecognizers {
//Single Finger Double-Tap
UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleDoubleTap:)];
singleFingerDTap.numberOfTapsRequired = 2;
[super addGestureRecognizer:singleFingerDTap];
//Single Finger Tap
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleTap:)];
singleFingerTap.numberOfTapsRequired = 1;
[singleFingerTap requireGestureRecognizerToFail:singleFingerDTap];
[self addGestureRecognizer:singleFingerTap];
//Two Finger Pan
UIPanGestureRecognizer *panGesture2 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture2:)];
panGesture2.maximumNumberOfTouches = 2;
[super addGestureRecognizer:panGesture2];
//Single Finger Pan
UIPanGestureRecognizer *panGesture1 = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture1:)];
panGesture1.maximumNumberOfTouches = 1;
[panGesture1 requireGestureRecognizerToFail:panGesture2];
[super addGestureRecognizer:panGesture1];
[singleFingerDTap release];
[singleFingerTap release];
[panGesture1 release];
[panGesture2 release];
}
Czy to oczekiwane zachowanie? Jeśli poprosisz go, aby opóźnił swoje działanie do czasu, aż kolejny gest się nie powiedzie, to nie może wystrzelić, dopóki to się nie skończy. Dwa krany mają między nimi przedział czasowy (dotknięcia! = Dotknięcia), więc potrzebujesz tego przedziału czasowego do przejścia. – Eiko
Dzięki, to ma sens! – Maddoxx