Ich habe eine benutzerdefinierte Tastatur, die ich benutze, um den Text in mytextField
zu bearbeiten, und es funktioniert großartig. Allerdings kann ich den Delegierten shouldChangeCharactersInRange
niemals mit meiner benutzerdefinierten Tastatur ausführen. Es wird ausgeführt, wenn ich meine eigentliche Tastatur benutze (offensichtlich nicht die Standard-iPhone-Tastatur, da ich mytextField.inputView = numberPad.view eingestellt habe). Was muss ich tun, damit der shouldChangeCharactersInRange
-Delegent über die benutzerdefinierte Tastatur ausgelöst wird? Übrigens ist die benutzerdefinierte Tastatur nur ein paar Knöpfe.
Das shouldChangeCharactersInRange
wird nie mit einer benutzerdefinierten Tastatur aufgerufen.
Was Sie bekommen können, ist das Ereignis UIControlEventEditingChanged
von UITextField
. Anstatt sich auf shouldChangeCharactersInRange
method zu verlassen (was zusätzlich bekannt ist, dass es fehlerhaft ist), sollten Sie sich auf dieses Ereignis verlassen, das jedes Mal ausgelöst wird, wenn der Benutzer den Inhalt des Textfelds ändert.
Wenn Sie das Textfeld mit Ihrer eigenen Tastatur ändern, rufen Sie diese Methode auf, um alle Listener des Ereignisses UIControlEventEditingChanged
zu benachrichtigen.
Bearbeiten: Entschuldigung, habe deine Frage vorher falsch verstanden.
Ihr Textfeld ruft shouldChangeCharactersInRange
auf, wenn es von der Systemtastatur eingegeben wird. Dadurch haben Sie die Möglichkeit zu bestimmen, ob der Text tatsächlich angezeigt werden soll (z. B. können Sie ihn zur Erkennung einer Verknüpfung implementieren) fügen Sie etwas längeren Text ein). Das Textfeld erkennt jedoch keine Eingaben von Ihrer benutzerdefinierten Ansicht als Texteingabe.
Wenn Sie eine benutzerdefinierte inputView haben, müssen Sie diese Methode nicht aufrufen - aktualisieren Sie einfach das Textfeld direkt von Ihrer IBAction:
%Vor%Ich weiß, dass dies eine alte Frage ist, aber ich stieß auf das gleiche Problem, wenn ich Pre-5.0-Geräte unterstützen musste. Wenn Sie insertText überschreiben: Folgen Sie den Anweisungen von Rob in Ссылка Dann wird shouldChangeCharactersInRange jedes Mal ausgelöst.
Wenn Sie dann den Rückschrittschlüssel wie ich unterstützen müssen, können Sie die Antwort von @cormacrelf bei Wie simuliert man den Löschschlüssel auf UITextField?
Das einzige Problem, mit dem ich nicht umgehen konnte, ist, dass beim Löschen eines Zeichens aus der Mitte des Strings der Cursor zurück zum Ende des Strings springt.
Tags und Links ios uitextfield delegates