iPhone 5(iOS 8.0.2が搭載されている)用のXcode 6.0.1を使用してiOS 8アプリを作成しています。ユーザーが私の をクリックするとUITextView
、すべてのテキストが選択されて、簡単に入力を開始してそこにあったものを消去できるようにしたい (ただし、ユーザーが保持したい場合があるため、テキストが自動的に消去されることは望ましくない)それまたはそれに追加します)。これを行うには、次のコードがあります。
- (void)textViewDidBeginEditing:(UITextView *)textView {
if ([textView hasText]) {
NSLog(@"selectedRange before: %d", textView.selectedRange.length);
[textView selectAll:self];
NSLog(@"selectedRange after: %d", textView.selectedRange.length);
}
}
このメソッドが呼び出されると、コンソール出力は期待どおりになります (つまり、長さはのテキストのselectedRange
文字数と同じです)。textView
ただし、 で選択されているものは何も表示されず、選択されたUITextView
ように動作しません (つまり、選択メニューがポップアップしません)。
インターネットでこのような質問を複数見ましたが、提供された解決策はどれもうまくいきませんでした(解決策を提供せずにバグとして書き留めたものもありました)。self
送信者 ID を( などの)以外のものに変更してnil
も効果はありませんでした[textView select:self]
。私もこのコードを試しました:
- (void)textViewDidBeginEditing:(UITextView *)textView {
if ([textView hasText]) {
UITextRange *range = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.endOfDocument];
[textView setSelectedTextRange:range];
}
}
しかし、それには同じ問題があります。
助言がありますか?