UITextField と UITextView はどちらも UITextInput プロトコルを採用しています。UITextView の selectedRange プロパティは NSRange を返しますが、UITextField には選択プロパティ/メソッドがありません。UITextField または UITextView への挿入を管理するルーチンを 1 つ使用したいと思います。
だから私は次のことをします:
id<UITextInput> textInput = nil;
if ([self.aTextView isFirstResponder]) {
textInput = self.aTextView;
} else if ([self.aTextField isFirstResponder]) {
textInput = self.aTextField;
}
if (textInput != nil) {
UITextRange * selectedRange = textInput.selectedTextRange;
// ...
}
selectedTextRange プロパティで「認識されないセレクターがインスタンスに送信されました」で即座にクラッシュするだけです。
私は何を間違っていますか?
[編集: iOS 5 では動作するようですが、iOS 4 のデバイスではクラッシュします。これは iOS 5 での変更ですか? ドキュメントによると、プロトコルは 3.2+ です。]