wie Sie verhindern, dass ein touch-Ereignis übergeben, um eine UIView ' s superview?
Ich habe ein Programm, welches die Bilder enthält, die gezogen werden können, sich zu bewegen auf dem Bildschirm.
auch ich verwendet UIScrollView da der Raum größer ist als das Fenster.
Ich UIView-Unterklassen als Bilder Anzeige, um die Bild-und Griff berührt in dieser Klasse.
Bild-Ansichten Hinzugefügt werden, wie Untersichten der scrollView.
jetzt habe ich aber ein problem:
wenn ich ziehen Sie das Bild, das scrollView bewegt sich zusammen mit dem Bild.
Ich Frage mich, ob es einen Weg gibt, zu konsumieren, die berührt in der picture-Klasse zu verhindern, dass Sie von vorbeifahrenden zu superview.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie Ihre code in "touchesMoved:withEvent:" Methode der UIView. Wenn Ihre Sicht wird dieses Ereignis behandeln, indem Sie sich selbst, dann sollte es keine Blase zu superview
Icewind ' s Kommentar oben das problem gelöst:
Können Sie versuchen, canCancelContentTouches, KEINE in Ihrem UIScrollView. Und setzen exclusiveTouch JA in Ihrem UIView mit Bild – Eiswind Mar 7 14:22
warum verwenden Sie
UIScrollView
? Sie haben Sie eigene scroll-Bild-Ansicht, so gibt es keine Notwendigkeit zu verwenden dieUIScrollView
zu behandeln, das scroll-touch-Eingabe.anders herum, warum Sie verwenden Sie eigene scroll-Bild-Ansicht?
UIScrollView
behandeln scrolling Fall, so können Sie nur eineUIImageView
unterUIScrollView
die Arbeit die gleiche, es sei denn Ihre eigene Ansicht haben einige andere Verhalten, aber Sie können UnterklassenUIImageView
oderUIView
und ohne scrollen zu müssen das Bild von Ihnen selbst, da Sie wissenUIScrollView
wird es für Sie tun.Ich weiß, das ist eine alte Frage, aber ich hatte ein ähnliches Problem und die genehmigte Antwort (Einstellung
canCancelContentTouches
zufalse
in der scroll-Ansicht undisExclusiveTouch
zutrue
in der Untersicht) funktionierte nicht für mich.Nach etwas Experimentieren, fand ich, dass Sie einfach überschreiben
gestureRecognizerShouldBegin(_:)
in meinem Untersicht zurückfalse
das problem gelöst:Müssen Sie Unterklasse
UIScrollView
und überschreibentouchesShouldCancel
:Als bonus können Sie möchten
scrollView.delaysContentTouches = false
für eine sofortige Antwort auf Ihre benutzerdefinierte Steuerelemente.