OS X v10.11中不推荐使用NSTextView的insertText方法。什么是替代品?

时间:2015-09-25 17:42:50

标签: macos cocoa nstextview appkit

我在AppKit API Reference中看到OS X v10.11中不推荐使用insertText方法。我应该用什么作为替代品?

3 个答案:

答案 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)];