2016-04-09 11 views
0

iOS verfügt über eine integrierte Funktion, wo Benutzer auf Textersetzungen inSwift: Detecting iOS Keyboard Textersetzung in UITextField

Einstellungen> Allgemein> Tastatur> Textersetzung

In meinem Swift einstellen UITextField der iOS-App muss ich wissen, wann der Benutzer diese Textersetzung verwendet hat, damit ich geeignete Maßnahmen ergreifen kann. Mein Instinkt

func textField(tf: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

aber interessant, diese Funktion nicht aufgerufen wird auf diese Art von Textersetzung, gibt es andere Möglichkeiten, um dieses Problem lösen zu verwenden war?

+1

Ich habe es gerade versucht, und 'textField: shouldChangeCharactersInRange: ErsetzungString' wird tatsächlich aufgerufen, wenn ich" Omw "eintippte, die durch" Auf meinem Weg! "Ersetzt wurde, als ich das Leerzeichen eingab. Ich habe versucht, die iPhone 6s Plus (9.3) und iPhone 4s (8.1) Simulatoren. – TylerTheCompiler

+0

Vielleicht in der Dendediting? – BHuelse

Antwort

2

Ich testete die shouldChangeCharactersInRange Funktion in dieser Einstellung und es sieht die Text-Erweiterung. Ich testete mit:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

     print(string.characters.count) 

     return true 
    } 

Sie können die Zeichenanzahl springen sofort nach der Text-Erweiterung zu sehen.

Stellen Sie sicher, dass Ihr textField mit einem IBOutlet verbunden ist und Sie die Klasse als Delegat festgelegt haben (textField.delegate = self in viewDidLoad).

Sobald Sie sehen, dass dies funktioniert, können Sie natürlich Text Expansion erkennen und behandeln, wie Sie möchten.

+0

Es stellte sich heraus, dass ich nach '.text' Wert des' textField' in 'shouldChangeCharactersInRange' suchte, was zu früh ist. – Kashif

+0

Eigentlich sollte ich auch erwähnen, dass es für mich nicht funktionierte, weil ich gleichzeitig versuchte, whitespaces durch 'sentChangeCharactersInRange' zu ​​unterdrücken, das die Textaustauschbenachrichtigung blockierte. – Kashif

+0

Lebe und lerne. –

Verwandte Themen