良い質問。しかし、それはあなたが実装UITextInputDelegate
するプロトコルではないようです。
Lower Level Text-Handling Technologiesというタイトルの Apple Docs から:
外部の理由によりテキスト ビューで変更が発生した場合 (つまり、テキスト入力システムからの呼び出しによるものではない場合)、UITextInput
オブジェクトは、、、、および
メッセージtextWillChange:
を入力デリゲート (参照を保持している) に送信する必要があります。たとえば、ユーザーがテキスト ビューをタップし、選択したテキストの範囲を設定して挿入ポイントを指の下に配置する
場合、選択した範囲を変更する前に送信
し、範囲を変更した後に送信します。textDidChange:
selectionWillChange:
selectionDidChange:
selectionWillChange:
selectionDidChange:
そしてUITextInputDelegateのドキュメントから:
UIKit は、クラスが UITextInput プロトコルを採用するオブジェクトの inputDelegate プロパティに、実行時に割り当てるプライベート テキスト入力デリゲートを提供します。
上記の意味は、これらのデリゲート メソッドを実装していないということです。inputDelegate
これらを使用して、キーボード入力以外の方法でテキストまたは選択を変更したことを に通知します。
これを説明するメソッドの例を次に示します。
- (void)delete:(id)sender;
{
if (selection && ![selection isEmpty]) {
[inputDelegate textWillChange:self];
[inputDelegate selectionWillChange:self];
[self replaceRange:selection withText:@""];
[inputDelegate selectionDidChange:self];
[inputDelegate textDidChange:self];
}
}
ここに他の例を含むサンプルコード。