16

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

任何想法?先感谢您..

我引用了这个链接:iPhone SDK:如何创建一个 UITextView,在你点击的地方插入文本?

但没有得到它。

4

4 回答 4

29

丹的答案是手动更改文本。UITextView它与's玩得不好UndoManager

实际上,使用和UITextInput支持的协议 API插入文本非常容易。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"];

UITextView符合UITextInput其自身符合UIKeyInput

于 2016-09-09T09:34:48.627 回答
5

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

if let textRange = myTextView.selectedTextRange {
   myTextView.replace(textRange, withText:UIPasteboard.general.string!)
}
于 2017-04-01T18:53:09.513 回答