我正在尝试使用底线输入在Leopard上的Cocoa应用程序中支持国际输入(一种输入方法,用户在一个小窗口中输入文本,称为浮动输入窗口,出现在底部附近屏幕)。
我不想支持内联输入。
当用户使用输入菜单更改输入法时,当用户在我的应用程序中键入文本时,我看不到标准的浮动输入窗口。任何人都知道我的应用程序需要做什么才能获得此输入窗口?
感谢。
答案 0 :(得分:1)
据我所知(如果我错了,请纠正我),在Cocoa中没有支持底线输入窗口的中间立场。支持输入方法的主要方法是实现NSTextInputClient协议,该协议实现内联编辑。有一个很好的sample code可用如何实现它。
在Carbon时代,您的选择是碳事件
kEventTextInputUpdateActiveInputArea
用于内联输入,或kEventTextInputUnicodeForKeyEvent
用于底部窗口输入。见Text Services Manager in Carbon。但是这些在64位Cocoa应用程序中不可用。对于32位Cocoa应用程序,您可以使用可怕的Carbon-Cocoa integration为后者安装处理程序。但这肯定比实施NSTextInputClient
协议更复杂。
所以,我的建议是使用NSTextInputClient
实现内联编辑。这将使许多东亚人高兴,包括我。