如何在uitextview中的任何光标位置插入文本?

kus*_*hah 16 iphone uitextview uitextviewdelegate ios

我想实现Code,通过它我可以开始在iphone sdk中的UITextView中的光标的任何位置插入文本

任何的想法?先感谢您..

我引用了这个链接:iPhone SDK:如何创建一个UITextView,在您点按的位置插入文本?

但没有得到它.

eth*_*g13 24

Dan的答案是手动更改文本.它与UITextView的UndoManager不兼容.

实际上,使用UITextInput协议API插入文本非常容易,UITextView和UITextField支持该协议API.

[textView replaceRange:textView.selectedTextRange withText:insertingString];
Run Code Online (Sandbox Code Playgroud)

注意:它是UITextInput协议中的selectedTextRange,而不是selectedRange


Dan*_*Dan 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.
Run Code Online (Sandbox Code Playgroud)


Glo*_*del 5

最简单的方法(但不会替换所选文本)是使用以下insertText:方法:

[textView insertText:@"some text you want to insert"];
Run Code Online (Sandbox Code Playgroud)

UITextView符合UITextInput其本身符合UIKeyInput.


use*_*232 5

这是 Glorfindel 在 Swift3 中的回答。在此处插入的文本会从剪贴板中拉出。

if let textRange = myTextView.selectedTextRange {
   myTextView.replace(textRange, withText:UIPasteboard.general.string!)
}
Run Code Online (Sandbox Code Playgroud)