我正在处理的应用程序使用自定义文本编辑器。问题在于,它因此没有采用Mac现在标准的长按按键重音弹出窗口,即,按住'A'将产生“ aaaaaaaaa”而不是“àáä...”窗口。 >
有人知道是否可以通过编程方式调用/否则实现该口音弹出窗口?
答案 0 :(得分:0)
在Creating a Custom Text View section的Cocoa Text Architecture Guide中讨论了如何正确处理关键事件,以便它们与系统正确交互。您还应该熟悉Handling Key Events chapter中的Cocoa Event Handling Guide(尽管有些过时;尤其是它指的是已被NSTextInput
取代的已弃用的NSTextInputClient
协议)。
基本要点是,您应该通过-[NSTextInputContext handleEvent:]
或-[NSResponder interpretKeyEvents:]
发送关键事件,在视图上实现操作方法,并让视图类采用并实现NSTextInputClient
协议
您从NSTextInputContext
的{{1}}属性中获得了对适当的inputContext
对象的引用。
通过那些处理程序方法之一发送键事件是激活按住功能的方式。 NSView
协议方法是它最终与文本视图的文档模型交互的方式。当用户从弹出窗口中选择一个字符时,该功能会使用该协议将初始字符实际替换为最后一个字符。
这也将允许您的文本视图处理亚洲输入法。