以编程方式实现Mac长按重音弹出窗口

时间:2018-08-24 01:27:55

标签: macos diacritics

我正在处理的应用程序使用自定义文本编辑器。问题在于,它因此没有采用Mac现在标准的长按按键重音弹出窗口,即,按住'A'将产生“ aaaaaaaaa”而不是“àáä...”窗口。 >

有人知道是否可以通过编程方式调用/否则实现该口音弹出窗口?

1 个答案:

答案 0 :(得分:0)

Creating a Custom Text View sectionCocoa Text Architecture Guide中讨论了如何正确处理关键事件,以便它们与系统正确交互。您还应该熟悉Handling Key Events chapter中的Cocoa Event Handling Guide(尽管有些过时;尤其是它指的是已被NSTextInput取代的已弃用的NSTextInputClient协议)。

基本要点是,您应该通过-[NSTextInputContext handleEvent:]-[NSResponder interpretKeyEvents:]发送关键事件,在视图上实现操作方法,并让视图类采用并实现NSTextInputClient协议

您从NSTextInputContext的{​​{1}}属性中获得了对适当的inputContext对象的引用。

通过那些处理程序方法之一发送键事件是激活按住功能的方式。 NSView协议方法是它最终与文本视图的文档模型交互的方式。当用户从弹出窗口中选择一个字符时,该功能会使用该协议将初始字符实际替换为最后一个字符。

这也将允许您的文本视图处理亚洲输入法。