Ich schreibe eine benutzerdefinierte Tastaturerweiterung für iOS 8 in Swift, und ich habe Probleme, ein Swype-artiges Scribble-Overlay zu implementieren. Im Moment verfügt meine Tastatur über eine Basis UIView
(die view
Eigenschaft meiner UIInputViewController
), die eine Anzahl von UIButtons
entsprechenden Tasten auf der Tastatur hat. Jeder dieser Tasten reagiert auf touchUpInside
Ereignisse und hat UISwipeGestureRecognizers
, die sekundäre Zeichen eingeben, wenn Sie nach oben oder unten wischen. Ich habe außer Kraft gesetzt, um meine Scribble-Overlay-Ansicht als Unteransicht hinzuzufügen, und touchesEnded:withEvent:
, um meine Scribble-Overlay-Ansicht in meiner UIInputViewController
zu entfernen.Wie unterscheide ich Berührungsereignisse bedingt ab?
Wenn ich derzeit versuche, ausgehend von einem Teil der Abstände zwischen den Schaltflächen zu scribbeln, wird die Überlagerungsansicht des Scribbles richtig angezeigt. Wenn ich jedoch von oben auf UIButton
schreibe, fängt das UIButton
das Berührungsereignis ein und leitet es nicht an meine UIInputViewController
weiter.
Wie kann ich meine Tastatur so implementieren, dass meine Scribble-Overlay-Ansicht angezeigt wird, wenn der Benutzer zwischen den Schaltflächen kritzelt, aber ansonsten mit den Tasten drückt/wischt?
--EDIT--
Ich habe versucht, dies die touchesBegan/Moved/Ended/Cancelled
Methoden durch zwingende zu lösen das Ereignis zum nächsten Responder zu übermitteln. Wenn ich auf einen Knopf klicke und dann auf einen anderen klicke, kann ich ein Bild zwischen den beiden sehen. Ich kann jedoch immer noch nichts als Knopfdruck zwischen den Tasten auf den Knopf ziehen. Hat jemand eine bessere Idee?
--edit # 2--
Derzeit ist meine Ansicht Hierarchie wie folgt aufgebaut: UIView
(aus den UIInputViewController
) Subviews: Alle meine Knöpfe, dann meine ScribbleView
die Subviews überlagert.
Wenn ich auf meiner ScribbleView
userInteractionEnabled
auf true setzen, kann ich kritzeln, um irgendwo zu erscheinen, unabhängig von der Startposition, aber dann verliere ich meine Schaltfläche Funktionalität.
Was Quellcode betrifft, habe ich mit verschiedenen Konfigurationen von passierenden Ereignissen experimentiert und was nicht, aber der Hauptteil des Codes kann hier gefunden werden: https://github.com/Kamaros/ELDeveloperKeyboard.
Definitiv eine Option, obwohl ich nicht sicher bin, wie dies in Verbindung mit den Gestenerkennern funktioniert, die ich an jede Taste angehängt habe. Einen Versuch wert, wenn niemand an etwas schlauer denkt. – Kamaros
Da Sie das Gekritzel zwischen den Schaltflächen erhalten (und nicht auf den Schaltflächen), ist es nicht nur eine Frage der Ansichtshierarchie? Ich meine, zeichnest du nicht unter dem Button selbst? Auch hier ist es nur eine Vermutung, da ich keinen Zugriff auf Ihren Code habe. Alternativ können Sie, wenn Sie auf Kludges stehen, immer eine leere UIView über alle Schaltflächen legen und darauf zeichnen, anstatt sie dort zu zeichnen, wo Sie gerade zeichnen. –