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?
Odpowiedz
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;
Dziękuję, to bardzo pomaga! – Fitzy
Dziękuję @Brandom –
można użyć requireGestureRecognizerToFail:
rozpoznać kran na podrzędny zapoznaj this kod
może należy ustawić jako: subviews.userInteractionEnabled = TAK; powodzenia!
Cholera! Tego właśnie potrzebowałem. Mój podgląd został zignorowany przez gestRecognizer, a teraz działa. Dzięki. – surfrider
Proszę podać jasne wyjaśnienie, co lubisz robić? chcesz rozpoznać kliknięcie na podglądzie? –