在什么条件下[NSEvent字符]可以是长度大于1的NSString?

时间:2016-06-05 03:35:02

标签: ios objective-c macos cocoa nsevent

NSEvent有一个characters属性,它是一个对键上/下事件有效的NSString。在什么条件下,字符串长度可以大于1?

我能找到的唯一条件是NSEvent对应于IME(输入法编辑器)的输入。

编辑 - 我知道代理配对的情况,但在问这个问题时它以某种方式滑出我的脑海。当没有的时候,我对这个案子更感兴趣。字素(字符)本身大于1。

3 个答案:

答案 0 :(得分:1)

  

在什么条件下,字符串长度可以大于1?

如果你有一个键盘/输入法可以输入任何需要UTF-16代理对的单个字符,例如a(Unicode线性B音节B008 A),然后length将为2.这是因为length返回16位代码单元的数量,而不是字符数。

答案 1 :(得分:0)

在Mac OS X中使用字符序列对高unicode代码点进行编码。尝试。

答案 2 :(得分:0)

您还可以通过以编程方式发布的事件来获取此信息。 CGEventKeyboardSetUnicodeString()允许调用者将任意字符串附加到键事件。