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

时间:2012-01-13 06:25:59

标签: iphone ios uitextview uitextviewdelegate

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

任何想法? 提前谢谢你..

我评论了这个链接:iPhone SDK: How to create a UITextView that inserts text where you tap?

但没有得到它。

4 个答案:

答案 0 :(得分:22)

Dan的回答是手动更改文字。它与UITextView的UndoManager不兼容。

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

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

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

答案 1 :(得分: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.

答案 2 :(得分:4)

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

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

UITextView符合UITextInputUIKeyInput符合beforeEach( inject(function (_$controller_) { myController = _$controller_('myControllerName', { callMe: jasmine.createSpy('callMe'); }); }) );

答案 3 :(得分:3)

以下是Glorfindel在Swift3中的回答。它插入的文本从剪贴板中拉出来。

if let textRange = myTextView.selectedTextRange {
   myTextView.replace(textRange, withText:UIPasteboard.general.string!)
}