Erkennen von touch-event auf dem UIScrollView UND auf UIView - Komponenten [, die innerhalb von UIScrollView]

Habe ich UIViewController auf meine einfache storyboard IPad-Projekt enthält UIScrollView, die sich über die gesamte Oberfläche (1024 x 768). Erstellt habe ich 3 XIB-Dateien, die von UIViews, die meine Anwendung geladen auf start in viewDidLoad und fügen Sie Sie in UIScrollView. Jede dieser 3 XIB-Datei enthält nur einen UIButton.

Dies ist Hierarchie:

~ UIViewController (UIViewControllerClass ist Klasse für diese
UIViewController)

~~ UIScrollView (enthält 3 identische UIViews)

~~~ UIView (UIViewClass wird File ' s Owner für diese XIB-Datei)

~~~~ UIButton

Ich möchte, dass mein UIViewControllerClass wird bewusst: touch überall auf dem UIScrollView Komponente UND wenn UIScrollView ist berührt, wenn UIButton innerhalb von UIView in UIScrollView berührt wird, ist die information, dass genau diese Taste berührt wird.

Machte ich IBAction innen UIViewClass für touch auf UIButton innen UIView in UIScrollView und wenn ich Benutzerinteraktion Aktiviert = JA auf alle Elemente (UIViewController, UIView und UIScrollView) diese Methode wird aufgerufen, wie es sollte.

Aber an dieser Stelle mein UIViewControllerClass, ist sich nicht bewusst, dass die Berührung aufgetreten innen UIScrollView auf, dass UIButton. Ich machte die touch-Erkennung wie diese:

UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch)];
touch.numberOfTouchesRequired = 1;

und fügte hinzu, es zu UIScrollView Komponente. Auf diese Weise bin ich in der Lage zu erkennen, touch-event auf dem UIScrollView Komponente in UIViewControllerClass, aber touch-event-handler für UIButton in UIView das innerhalb eines UIScrollView nicht mehr genannt.

So, ich brauche diese beiden Informationen in UIViewControllerClass:

  • Touch auf dem UIScrollView Komponente gemacht wurde
  • Touch auf UIButton in UIView das innerhalb eines UIScrollView (wenn diese Schaltfläche berührt wurde) wurde

Ich nehme an, dass die Anbringung touch-event-Erkennung gesamte UIScrollView Komponente ist nicht die Lösung, da es deaktiviert alle touch-event-Handler schrieb ich innerhalb UIViewClass.

Ich denke die Lösung, dass es irgendwie berührt, die sich auf Komponenten in UIView innen UIScrollView gesendet werden sollen, bis zu UIViewControllerClass, aber ich habe nicht gefunden, einen Weg, dies zu tun.

Wenn jemand mir helfen kann, wäre ich sehr dankbar. Vielen Dank im Voraus.


[edit #1: ANTWORT von Zheng]

Tap-Geste muss cancelsTouchesInView option KEINE!

Für meinen Fall oben, wird diese Zeile löst alles:

touch.cancelsTouchesInView = NO;

Vielen Dank an Zheng.

InformationsquelleAutor uerceg | 2012-09-03

Schreibe einen Kommentar