wie mache ich UIKeyInput wiederhole deleteBackwards Aufrufe

8

Momentan benutze ich UIKeyinput, aber es sendet nur ein einzelnes delteBackward-Ereignis, auch wenn ich die Löschtaste lange gedrückt halte. Wie kann ich mir mehrere Ereignisanrufe senden lassen, wenn ich die Löschung längere Zeit annehme?

    
Tom Dev 06.07.2011, 04:26
quelle

2 Antworten

3

Es gibt keine einfache Möglichkeit, die Systemtastatur automatisch zu wiederholen. Damit haben Sie zwei Optionen:

  1. Fake es mit einem Overlay auf der Tastatur (siehe den Kommentar von @ pho0)
  2. Implementieren Sie eine benutzerdefinierte Tastatur, installieren Sie sie als Eingabeansicht für Ihre Ansicht oder zum Anzeigen des Controllers und implementieren Sie ein benutzerdefiniertes Protokoll, das die automatische Wiederholung unterstützt.

Lösung 1 funktioniert gut, wenn Sie nur die Löschtaste zur automatischen Wiederholung benötigen. Wenn Sie jedoch alle Tasten zur automatischen Wiederholung benötigen, wird der Überlagerungscode so komplex wie die benutzerdefinierte Tastaturoption. (Die Überlagerung benötigt für jede Taste ein Rechteck, also ersetzen Sie einfach die darunterliegende Tastatur).

Lösung 2 beinhaltet eine gewisse Anzahl von "Vorarbeiten" ... Eine Möglichkeit besteht darin, eine Tastaturkappenklasse (wie einen physischen Schlüssel) und eine Tastaturlayoutklasse zu definieren.

Ich habe beide Lösungen in Projekten implementiert, an denen ich gearbeitet habe, aber ich verwende derzeit die Lösung 2, da ich jede Tastatur erstellen kann, die ich mag. Im einfachen Fall muss der Benutzer nie wissen, dass es nicht die Systemtastatur ist. Für Power-User können sie die Tastatur anpassen, wie sie es für richtig halten.

Was es wert ist, fand ich es nützlich, die Tastaturklasse dumm zu machen; Es kommuniziert nur, dass ein Schlüssel in den Zustand "down" oder "up" übergegangen ist. Eine darüber liegende zusätzliche Klasse entscheidet darüber, welche Aktion ausgeführt werden soll.

In gewisser Weise weiß ich, dass dies nicht die Antwort ist, nach der Sie gesucht haben, aber ich hoffe, dass es hilft, IDZ

    
idz 12.05.2012, 09:55
quelle
3

Eine Sache, die ich gesehen habe, ist eine falsche Taste oben auf der Tastaturtaste. Wenn jemand es festhält, lassen Sie einen Timer den letzten Buchstaben jedes Mal löschen, wenn er ausgelöst wird.

Hoffe, das hilft.

    
pho0 07.05.2012 20:10
quelle

Tags und Links