Schnelle Frage: Wie erkenne ich, ob sich eine TAP-Gestenerkennung in einer Unteransicht der Ansicht befindet, zu der sie hinzugefügt wurde? Z.B. Wenn ich auf ein Objekt wie ein Quadrat klicke, das als Unteransicht zu einem Hintergrund hinzugefügt wurde, zu dem ein TAPH-Gesture-Erkenner hinzugefügt wurde, wie erkenne ich, dass es angetippt wurde?So erkennen Sie eine Antippgeste in Unteransichten
Antwort
Sie können den Punkt des Abzweigs vom Gestenerkenner entfernen, wenn Ihre Handlermethode für eine beliebige Ansicht mit -locationInView:
aufgerufen wird. Verwenden Sie dann die folgende Methode für UIView: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
, um einen Verweis auf die tatsächliche Unteransicht zu erhalten, die angetippt wurde, wobei Sie sich daran erinnern, dass sich der übergebene Punkt im selben Koordinatenraum wie die Ansicht befindet.
Einiger Code zum Einstieg:
CGPoint point = [tapGestureRecognizer locationInView:parentView];
UIView *tappedView = [parentView hitTest:point withEvent:nil];
Für Treffertests um die Ansicht zu arbeiten, um die userInteractionEnabled
Eigenschaft auf YES
gesetzt haben muss. In vielen Ansichten, z. B. UILabel
, ist dies standardmäßig auf NO
eingestellt. So vor der oben:
self.subviewOfInterest.userInteractionEnabled = YES;
Danke, das hilft viel! – Fitzy
Danke @Brandom –
Sie die requireGestureRecognizerToFail:
verwenden können, den Hahn auf subview zu erkennen siehe this Code
vielleicht sollten Sie festlegen, wie: subviews.userInteractionEnabled = YES; viel Glück!
Verdammt! Das ist was ich brauchte. Meine Unteransicht wurde von GestenRecognizer ignoriert und jetzt funktioniert es. Vielen Dank. – surfrider
Bitte geben Sie klar, was Sie tun möchten? Möchten Sie den Klick auf Unteransicht erkennen? –