2016-06-01 12 views
0

Ich interessiere mich für die Touch-Position (z. B. etwas, das ist oder nachahmt touchesMoved) in einer View-Controller-Ansicht, während immer noch eine UIScrollView Subview aktiviert. Da alle touchesDidSomething Methoden von der UIScrollView verbraucht werden, hoffe ich, dass es einen Umweg gibt, dies zu erreichen.Ermitteln kontinuierliche Berührungsposition in Sicht mit UIScrollView noch aktiv

Hier sind ein paar Dinge, die ich versucht habe:

  • ein UIScrollView Vererben, zwingende es touchesMoved Methode ist und nebenbei, dass Touch-Informationen an eine custom delegate Methode in meinem scrollView's View-Controller. -> Dies funktioniert tatsächlich, wenn ich "abrechenbare Inhalte berührt" und "Inhalte berührt" auf meinem Scroll view abwählen, aber es verhindert, dass mein Scroll view scrollt.

  • Mit der gleichen Taktik wie oben, aber mit einem Unterklasse UIView als ein Geschwister zu meinem UIScrollView. Daher wird die Hierarchie wie folgt:

view UIScrollView Subview Subview CustomUIView < - custom UIView die delegate

Beide Methoden ruft in dem Umfang arbeiten, dass ich die Daten packen, aber auf Kosten meines blättern Ansicht nicht mehr scrollen. Ich weiß, dass ich den Ort eines Berührungsereignisses in einer UIScrollView ähnlich einer touchesBegan greifen kann, während die scrollView weiterhin funktioniert, aber ich habe keine Möglichkeit gefunden, kontinuierliche Berührungsereignisse beim Scrollen zu erhalten. Ist das möglich?

Hier ist eine Darstellung, was ich nach:

enter image description here

Für einige Metadaten, warum ich mich für diese suchen und warum so etwas wie scrollViewDidScroll ‚s greifen contentOffset.x wird, nicht funktionieren I bin speziell daran interessiert, wenn der bis zum Ende (oder Anfang) gescrollt hat und ein Benutzer versucht, vorwärts (oder rückwärts) zu wischen, obwohl der scrollView nicht mehr in der gedrückten Richtung scrollen kann. Wenn dies passiert, möchte ich die Vorwärtsbewegung (oder Rückwärtsbewegung) erkennen, um einen glatten Übergang zu einer anderen Ansicht zu initiieren.

+0

Wie erkennt man die Berührung in der ParentView und konvertiert die Position der Berührung mit der in UIScrollview hinzugefügten Unteransicht? Zur Überprüfung [this] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/doc/uid/TP40006816-CH3-SW52) – iphonic

Antwort

0

Ich löste dies, indem ich eine Panning-Gestenerkennung zu meiner Ansicht hinzufügte und sie translationInView Methode verwendete (UISwipeGestureRecognizer hat diese Methode nicht). Beispiel unten

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(myMethod(_:))) 
panGesture.delegate = self 
self.addGestureRecognizer(panGesture) 

func myMethod(sender: UIPanGestureRecognizer) { 
    // sender.translationInView(self).x 
} 

auch sicherstellen, dass für shouldRecognizeSimultaneouslyWithGestureRecognizer im UIGestureRegognizerDelegate true zurück, für die Scrollview zu berücksichtigen.