2012-05-05 8 views
14

Szybkie pytanie: w jaki sposób mogę wykryć, czy wykrywacz gestów dotykowych znajduje się w podglądzie widoku, do którego został dodany? Na przykład. jeśli kliknę na obiekt, taki jak kwadrat, który został dodany jako widok podrzędny do tła, do którego dodano narzędzie do rozpoznawania gestów, w jaki sposób mogę wykryć, że został on dotknięty?Jak wykrywać gest dotykowy w subviewsach?

+0

Proszę podać jasne wyjaśnienie, co lubisz robić? chcesz rozpoznać kliknięcie na podglądzie? –

Odpowiedz

37

Możesz chwycić punkt zaczepu z aparatu do rozpoznawania gestów, gdy metoda obsługi jest określona jako odpowiednia dla dowolnego widoku, który chcesz użyć, -locationInView:. Następnie użyj następującej metody na UIView: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event, aby uzyskać odwołanie do rzeczywistego widoku subu, który został dotknięty, pamiętając, że punkt, który przekazałeś, znajduje się w tej samej przestrzeni współrzędnych co widok.

Niektóre kodu do należy zacząć:

CGPoint point = [tapGestureRecognizer locationInView:parentView]; 
UIView *tappedView = [parentView hitTest:point withEvent:nil]; 

Do testowania trafień do pracy na stanowisku musi mieć właściwość userInteractionEnabled ustawiony YES. Wiele widoków, takich jak UILabel s, jest domyślnie ustawionych na NO. Więc przed powyższym:

self.subviewOfInterest.userInteractionEnabled = YES; 
+0

Dziękuję, to bardzo pomaga! – Fitzy

+0

Dziękuję @Brandom –

0

można użyć requireGestureRecognizerToFail: rozpoznać kran na podrzędny zapoznaj this kod

13

może należy ustawić jako: subviews.userInteractionEnabled = TAK; powodzenia!

+0

Cholera! Tego właśnie potrzebowałem. Mój podgląd został zignorowany przez gestRecognizer, a teraz działa. Dzięki. – surfrider