Gute Frage. Aber es scheint, dass UITextInputDelegate
ist kein Protokoll, das Sie implementieren.
von Apple Docs Lower Level Text-Handling Technologies dem Titel:
Wenn Änderungen in der Textansicht auftreten aufgrund externer Gründe, das heißt sie durch Anrufe aus dem Texteingabesystem-the UITextInput
Objekt nicht verursacht werden, sollten senden Sie textWillChange:
, , selectionWillChange:
und selectionDidChange:
Nachrichten an den Eingang Delegate (wo es einen Verweis auf). Wenn zum Beispiel Benutzer tippen eine Textansicht und Sie den Bereich des ausgewählten Textes das Einfügemarke unter dem Finger zu platzieren, würden Sie selectionWillChange:
senden, bevor Sie den gewählten Bereich zu ändern, und Sie senden selectionDidChange:
, nachdem Sie den Bereich ändern .
Und von der docs auf UITextInputDelegate:
Die UIKit bietet einen privaten Texteingabe delegieren, die es bei Laufzeit auf die inputDelegate Eigenschaft des Objekts, dessen Klasse die UITextInput Protokoll nimmt zuweist.
Die Auswirkungen des oben sind, dass wir diese Delegatmethoden nicht implementieren tun; Wir verwenden sie, um die inputDelegate
zu informieren, dass Sie Ihren Text oder Ihre Auswahl über andere Mittel als Tastatureingabe geändert haben.
Hier ist eine example Methode, die dies veranschaulicht: here
- (void)delete:(id)sender;
{
if (selection && ![selection isEmpty]) {
[inputDelegate textWillChange:self];
[inputDelegate selectionWillChange:self];
[self replaceRange:selection withText:@""];
[inputDelegate selectionDidChange:self];
[inputDelegate textDidChange:self];
}
}
Beispielcode mit mehr Beispielen.
Apples API erwähnt nur _ "textInput Die Dokumentinstanz, deren Klasse das UITextInput-Protokoll annimmt." _ Nicht gerade hilfreich. Hat Apple dafür einen Beispielcode? Da ist viel zu viel Nebel. – bauerMusic
Jetzt mit Beta 6, jeder Aufruf von 'textInput' führt zum Absturz der Tastatur. – bauerMusic
@bauerMusic rufst du self.textDocumentProxy an? Welchen Text Input meinst du? – nurxyz