我想实现Code,通过它我可以开始在iphone sdk中的UITextView中的光标的任何位置插入文本
任何想法? 提前谢谢你..
我评论了这个链接:iPhone SDK: How to create a UITextView that inserts text where you tap?
但没有得到它。
答案 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
符合UITextInput
,UIKeyInput
符合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!)
}