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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, ob dies für Sie arbeitet oder nicht, aber ich habe eine Antwort über touch-events für Ansichten, die innerhalb scrollview hier:
Die Entlassung der Tastatur in einer UIScrollView
Die Idee ist, zu sagen, die scrollView nicht zu schlucken bis alle tap-gesten innerhalb der scroll-view-Bereich.
Ich werde fügen Sie den code hier ein, na ja, hoffentlich ist es Ihr problem behebt:
InformationsquelleAutor Zhang
Können Sie eine Unterklasse Ihr UIScrollView und überschreiben Sie die Methode
- hitTest:withEvent:
die wird vom system aufgerufen, um zu bestimmen, welche Ansicht wird das Ereignis behandeln. Wann immer es genannt wird, kann man davon ausgehen, dass ein touch-Ereignis aufgetreten ist innerhalb der scroll-view, und durch den Aufruf der super Umsetzung, erhalten Sie die anzeigen, die normalerweise das Ereignis verarbeitet.Dieser sollte das Recht anwser.
Können Sie uns ein Beispiel geben von diesem code?
InformationsquelleAutor Guillaume
können Sie erfassen jede Art von gesten in der UIscrollView. Stellen Sie sicher, dass Sie auch behandeln einige der Standard-Eigenschaften wie set cancelsTouchesInView-Eigenschaft auf false, Standardwert ist true. Auch geben einige tag-nos zu Ihrem sub-Ansichten zu unterscheiden, in Selektoren. & auch damit Ihre Benutzer-Interaktion zu wahren.
InformationsquelleAutor Aks