我是AppKit API参考看到,insertText
方法在OS X v10.11弃用。那我应该作为替补使用?
该文件说,
- (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
这似乎是适当的替代
老方法
- (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)];