首页 > 解决方案 > 以编程方式实现 Mac 长按重音弹出

问题描述

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

任何人都知道是否可以以编程方式调用/以其他方式实现该重音弹出窗口?

标签: macosdiacritics

解决方案


正确处理关键事件以便它们与系统正确交互在Cocoa 文本架构指南的创建自定义文本视图部分中进行了讨论。您还应该熟悉Cocoa 事件处理指南的“处理关键事件”一章(尽管它有点过时;特别是它指的是已弃用的协议,已被 替换)。NSTextInputNSTextInputClient

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

您从 的属性获取对适当NSTextInputContext对象的引用。inputContextNSView

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

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


推荐阅读