iPhoneアプリには編集可能なUITextViewがあります。ユーザーがいくつかのツールバーボタンを押したときにカーソル位置にテキストを挿入する必要がありますが、カーソルの現在の位置を見つけるための文書化された(または文書化されていない)方法が見つからないようです。
誰かが何かアイデアを持っていますか、または他の誰かが同様のことを達成しましたか?
iPhoneアプリには編集可能なUITextViewがあります。ユーザーがいくつかのツールバーボタンを押したときにカーソル位置にテキストを挿入する必要がありますが、カーソルの現在の位置を見つけるための文書化された(または文書化されていない)方法が見つからないようです。
誰かが何かアイデアを持っていますか、または他の誰かが同様のことを達成しましたか?
drawh が言ったように、UITextView の selectedRange を使用して挿入ポイントを返すことができます。この範囲の長さは常にゼロです。以下の例は、その方法を示しています。
NSString *contentsToAdd = @"some string";
NSRange cursorPosition = [tf selectedRange];
NSMutableString *tfContent = [[NSMutableString alloc] initWithString:[tf text]];
[tfContent insertString:contentsToAdd atIndex:cursorPosition.location];
[theTextField setText:tfContent];
[tfContent release];
UITextView selectedRange
テキスト ビューがファーストレスポンダの場合、プロパティを使用して挿入ポイントを見つけます。それ以外の場合、ビューにフォーカスがない場合、このプロパティは を返しますNSNotFound
。その場合にカーソル位置を知る必要がある場合は、カーソル位置をメンバー変数に格納できるメソッドのサブクラス化UITextView
とオーバーライドを検討してください。canResignFirstResponder
試しましたUITextView.selectedRange
か?を返しますNSRange
。その location 要素は、カーソルがどこにあるかを教えてくれるはずです。