8 Stimmen

Benutzerdefinierte UIControl bekommt touchesCancelled beim Scrollen; wie kann ich Scroll deaktivieren?

Ich schreibe einen UISwitch-Ersatz (mit benutzerdefinierten Grafiken). Ich habe touchesMoved und friends außer Kraft gesetzt, so dass Sie das Widget zwischen Yes und No ziehen können, genau wie bei UISwitch.

Wenn Sie ihn in einer Scroll-Ansicht platzieren, werden Berührungen abgebrochen, wenn der Benutzer seinen Finger auch nur ein kleines bisschen diagonal statt perfekt horizontal bewegt, und das Scrollen setzt stattdessen ein. Ich habe festgestellt, dass UISwitch und UIButton dieses Verhalten nicht zeigen und der Bildlauf nie einsetzt, wenn diese Steuerelemente bedient werden.

Wie kann ich UIKit sagen, dass ich exklusive Kontrolle über diese Berührungen, in der Tat deaktivieren Sie scroll in touchesBegan und aktivieren Sie scroll in beendet/abgebrochen? Ich bin sicher, es gibt etwas offensichtlich, aber ich habe durch die Header und Dokumentation für UIControl, UIResponder, UIView und UIScrollView gesucht und habe nichts gefunden.

Hinweis: Ich möchte keine UIScrollView-Unterklasse erstellen; ich kann mir nicht vorstellen, dass das die richtige Lösung ist, das Steuerelement sollte völlig eigenständig sein.

4voto

jnic Punkte 8615

Einstellung canCancelContentTouches = NO in der Bildlaufansicht, und exclusiveTouch = YES in einem benutzerdefinierten Steuerelement ermöglicht dieses Verhalten, vorausgesetzt, Sie sind mit der Änderung von Eigenschaften in der Bildlaufansicht einverstanden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X