在啥情况下 [NSEvent characters] 可以是长度大于 1 的 NSString?
Posted
技术标签:
【中文标题】在啥情况下 [NSEvent characters] 可以是长度大于 1 的 NSString?【英文标题】:Under what conditions can [NSEvent characters] be a NSString of length greater than 1?在什么情况下 [NSEvent characters] 可以是长度大于 1 的 NSString? 【发布时间】:2016-06-05 03:35:01 【问题描述】:NSEvent 有一个 characters 属性,它是一个对按键向上/向下事件有效的 NSString。什么情况下字符串长度可以大于1?
到目前为止,我能找到的唯一条件是 NSEvent 对应于来自 IME(输入法编辑器)的输入。
编辑 - 我知道代理对案例,但在问这个问题时,它不知何故从我的脑海中溜走了。我对没有的情况更感兴趣。 of graphemes(characters) 本身大于 1。
【问题讨论】:
【参考方案1】:什么情况下字符串长度可以大于1?
当您的键盘/输入法可以输入任何需要 UTF-16 代理对的单个字符时,例如a ?(Unicode 线性 B 音节 B008 A),则 length
将为 2。这是因为 length
返回 16 位代码单元的数量,而不是字符数量。
【讨论】:
【参考方案2】:您也可以通过以编程方式发布的事件来获取此信息。 CGEventKeyboardSetUnicodeString()
允许调用者将任意字符串附加到键事件。
【讨论】:
【参考方案3】:高 unicode 代码点在 Mac OS X 中使用字符序列进行编码。试试 ?。
【讨论】:
以上是关于在啥情况下 [NSEvent characters] 可以是长度大于 1 的 NSString?的主要内容,如果未能解决你的问题,请参考以下文章
- (void)keyDown :( NSEvent *)事件不起作用
在啥情况下“Openwrt”优于“Buildroot”框架?
在啥情况下 [ [ UIApplication sharedApplication ] keyWindow ] 返回 nil?