我在AppKit API Reference中看到OS X v10.11中不推荐使用insertText
方法。我应该用什么作为替代品?
答案 0 :(得分:7)
文档说
- (void)insertText:(id)aString
此方法是用户输入的文本输入
NSTextView
的方法。有关详细信息,请参阅NSInputManager
类和NSTextInput
协议规范。 ...
在NSTextInput
中有一条注释:
重要强>
NSTextInput
协议将被弃用。请按照NSTextInputClient
中的说明使用OS X v10.5中引入的NSTextInputClient Protocol Reference
协议。
在NSTextInputClient
协议中有一个方法
- (void)insertText:(id)aString
replacementRange:(NSRange)replacementRange
这似乎是适当的替代
答案 1 :(得分:0)
顺便说一句,如果您要将文本粘贴到NSTextView,请更改为使用此:
pasteAsPlainText:
Apple文档以这种方式声明
讨论 此方法的行为类似于insertText:
答案 2 :(得分:-1)
旧方法
- (void)insertText:(id)aString
新方法
- (void)insertText:(id)aString replacementRange:(NSRange)replacementRange
在实践中使用新的insertText方法
// Start String: abcdef
// Result: a++bcdef
[NSTextView insertText:@"++" replacementRange:NSMakeRange(1, 0)];
// Result: a++def
[NSTextView insertText:@"++" replacementRange:NSMakeRange(1, 2)];
// Result: a++f
[NSTextView insertText:@"++" replacementRange:NSMakeRange(1, 4)];