objective-c - 有 OSX API 可以自己绘制候选输入法吗?

标签 objective-c macos cocoa input-method-kit

我想为全屏 OpenGL 游戏添加日语(和其他语言)输入支持,其中输入框是自定义渲染的小部件,即不是 NSView。

我认为采用NSTextInputClient将允许我利用输入法,但我不希望操作系统在我的游戏上呈现 OSX 风格的输入法 UI,因为这会破坏风格的连续性。

是否有一个较低级别的 API,可以让我 a.) 隐藏默认候选列表 UI,b.) 监听输入法上的事件并接收正在撰写的文本的候选列表,这样我可以按照周围 UI 的风格在游戏内文本小部件上呈现候选列表吗?

最佳答案

不是真的。 如果您不想为此使用 Cocoa View ,那么您将面临大量繁琐的工作。您可能不知道这些事情有多复杂。 没有任何直接的方法可以直接询问内置系统输入法的转换例程。 Apple 希望您按照设计的方式使用它们。 您也许能够通过隐藏 View 和可访问性 API 来实现某些目标,但这将是一场令人难以置信的艰苦战斗。 你最好花精力去弄清楚如何让这些尽可能地适应并继续前进。 有趣的是,通常使用其语言输入法的用户实际上会感觉这些输入法的一致外观很好并且很自在。可能比任何人以他们不熟悉的方式定制这些产品更重要。 这些输入法的许多方面,即使翻译成英语,如果没有真正理解使用它们的语言,也没有什么意义。

Koteri - The Japanese input method on OS X

在 Koteri 的这个示例中,您可以看到很多您可能无法处理的事情。

Cocoa 文本系统丰富、深刻且复杂。一般来说,你应该采用它而不是试图弯曲它。 (这样你就会取得更大的成功)

关于objective-c - 有 OSX API 可以自己绘制候选输入法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589731/

相关文章:

cocoa - NSManagedObjectContext 保存导致 NSTextField 失去焦点

cocoa - 当启用图层支持时,NSImageView 中的缩放图像看起来很糟糕

objective-c - 更改窗口背景颜色

objective-c - 使用 CFStringRef 和 CFRelease 进行适当的内存管理

ios - Firebase signInWithEmail 函数是否在主线程中运行?

objective-c - UIButton 在滚动时没有响应

objective-c - 解读 Mac OS X 崩溃报告

ios - 编码/解码 NSImage

ios - 在 Xcode 6 中使用 AutoLayout 约束模拟方面适合行为

.net - 当我检查 MAUI 与 maui-check 的兼容性时,如何确定错误出在哪里?