Chcę upuścić pinezkę na moim MKMapView
, gdy pojedynczy użytkownik dotknie mapy. Mam działający kod PIN, mam działający pojedynczy kran, ale kiedy dwukrotnie dotknę, aby powiększyć, najpierw otrzymuję pojedyncze dotknięcie. Oto mój kod, aby uzyskać konfigurację aparatów rozpoznawania:Pojedynczy Stuknij, aby MKMapView bez przerywanego dwukrotnego kliknięcia powiększ
self.doubleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
self.doubleTap.numberOfTapsRequired = 2;
self.doubleTap.numberOfTouchesRequired = 1;
[mapView_ addGestureRecognizer:doubleTap_];
self.singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleGesture:)];
self.singleTap.numberOfTapsRequired = 1;
self.singleTap.numberOfTouchesRequired = 1;
[self.singleTap requireGestureRecognizerToFail: doubleTap_];
[mapView_ addGestureRecognizer:singleTap_];
Teraz nie jest to zaskakujące, zacytować Apple:
Uwaga: W przypadku pojedynczej beczki kontra gestów Stuknij dwukrotnie, jeżeli a jednokrotnego rozpoznawania gestów nie wymaga dwukrotnego dotknięcia rozpoznawania , dlatego należy spodziewać się pojedynczego uderzenia przed akcjami podwójnego dotknięcia, nawet w przypadku podwójnego dotknięcia . Jest to oczekiwane i pożądane zachowanie, ponieważ najlepsze doświadczenie użytkownika zazwyczaj wiąże się z możliwością ustawiania w stos.
Dodałem więc requireGestureRecognizerToFail
do mojego pojedynczego czytnika zaczepów.
[singleTap requireGestureRecognizerToFail: doubleTap];
To zapewnia, że mój pojedynczy czytnik nie dostanie podwójnego dotknięcia.
Ale ...
Teraz mój double tap rozpoznawania dostaje podwójne krany i MKMapView
nie je dostać. Próbowałem ustawić cancelsTouchesInView
na NO
w urządzeniu rozpoznającym, ale to też nie pomogło.
Potrzebuję więc sposobu, aby zapobiec sytuacji, w której mój pojedynczy czytnik zaczepów otrzymywał podwójne kliknięcia (co wydaje się mało prawdopodobne) lub aby moje zdarzenie dwukrotnego dotknięcia było wyświetlane w moim widoku mapy.
Czy możesz pokazać kod, którego używasz do dodawania identyfikatorów gestów? Którą wersję systemu iOS testujesz? Czy próbowałeś powrócić TAK z metody delegowania shouldRecognizeSimultaneouslyWithGestureRecognizer? – Anna
pytanie edytowane, aby mieć więcej kodu. Testuję z iOS5.1. Nie próbowałem delegata PowinieneZostaćZeuropejskiegoWithGestureRecognizer, zrobię to teraz. –
shouldRecognizeSimultaneouslyWithGestureRecognizer = YES podstęp, utwórz tę odpowiedź, a ja oznaczy ją jako poprawną. Dzięki! –