我想为全屏 OpenGL 游戏添加日语(和其他语言)输入支持,其中输入框是自定义渲染的小部件,即不是 NSViews。
我认为采用NSTextInputClient将使我能够利用输入法,但我不希望操作系统在我的游戏中呈现它的 OSX 风格的输入法 UI,因为这会破坏风格的连续性。
是否有一个较低级别的 API 可以让我 a.) 隐藏默认候选列表 UI,以及 b.) 监听输入法上的事件并接收正在编写的文本的候选列表,以便我可以呈现我的游戏内文本小部件上的候选列表以周围 UI 的样式显示?
我想为全屏 OpenGL 游戏添加日语(和其他语言)输入支持,其中输入框是自定义渲染的小部件,即不是 NSViews。
我认为采用NSTextInputClient将使我能够利用输入法,但我不希望操作系统在我的游戏中呈现它的 OSX 风格的输入法 UI,因为这会破坏风格的连续性。
是否有一个较低级别的 API 可以让我 a.) 隐藏默认候选列表 UI,以及 b.) 监听输入法上的事件并接收正在编写的文本的候选列表,以便我可以呈现我的游戏内文本小部件上的候选列表以周围 UI 的样式显示?
并不真地。如果您不想为此使用 Cocoa 视图,那么您将面临大量繁琐的工作。你可能不知道这些事情有多复杂。没有任何直接的方法可以直接询问内置系统输入法的转换例程。Apple 希望您以设计使用的方式使用它们。你可能能够通过隐藏视图和可访问性 API 完成某些事情,但这将是一场令人难以置信的艰苦战斗。你最好把精力花在弄清楚如何让这些人尽可能地适应并继续前进。有趣的是,通常使用其语言输入法的用户实际上会感觉很好,并且这些输入法的外观一致。可能比任何人以他们不熟悉的方式定制那些更重要。这些输入法的许多方面,即使翻译成英文,如果不真正了解使用它们的语言,也将毫无意义。
在这个 Koteri 示例中,您可以看到很多您可能无法处理的事情。
Cocoa 文本系统丰富、深刻和复杂。一般来说,你应该采用它而不是试图弯曲它。(你会因此获得更大的成功)