16

iphone sdkのUITextViewでカーソルの任意の位置にテキストを挿入できるコードを実装したい

何か案が?前もって感謝します..

私はこのリンクを参照しました: iPhone SDK: How to create a UITextView that insert text where you tap?

しかし、それを取得していません。

4

4 に答える 4

29

ダンの答えは、テキストを手動で変更することです。UITextViewのとはうまくいきませんUndoManager

実際、 および でサポートされているプロトコル API を使用して、テキストを挿入するのは非常に簡単UITextInputです。UITextViewUITextField

[textView replaceRange:textView.selectedTextRange withText:insertingString];

注: これselectedTextRangeUITextInputプロトコルではなく、プロトコルにあります。selectedRange

于 2014-03-26T23:46:32.363 に答える
11

これは私がカスタムキーボードで使用するもので、問題なく動作するようです。よりクリーンなアプローチがあるかもしれませんが、わかりません。

NSRange range = myTextView.selectedRange;  
NSString * firstHalfString = [myTextView.text substringToIndex:range.location];  
NSString * secondHalfString = [myTextView.text substringFromIndex: range.location];  
myTextView.scrollEnabled = NO;  // turn off scrolling  

NSString * insertingString = [NSString stringWithFormat:@"your string value here"];

myTextView.text = [NSString stringWithFormat: @"%@%@%@",  
                 firstHalfString,  
                 insertingString,  
                 secondHalfString];  
range.location += [insertingString length];  
myTextView.selectedRange = range;  
myTextView.scrollEnabled = YES;  // turn scrolling back on.
于 2012-01-18T20:25:03.457 に答える
5

最も簡単な方法 (ただし、選択したテキストは置き換えられません) は、次のinsertText:方法を使用することです。

[textView insertText:@"some text you want to insert"];

UITextViewUITextInputは、それ自体が に準拠していますUIKeyInput

于 2016-09-09T09:34:48.627 に答える