为什么NSSecureTextField不支持某些语言的字符串?

时间:2013-10-30 09:59:18

标签: macos cocoa nstextfield nstextfieldcell

我注意到我无法在NSSecureTextField中输入俄语或阿拉伯语文本。

例如,如果我的键盘设置为俄语,只要我点击NSSecureTextField,,我的键盘就会自动更改为英语,然后在我存在时恢复为俄语NSSecureTextField.

同样,只要NSSecureTextField处于活动状态,我就无法将键盘设置为阿拉伯语。

除阿拉伯语和俄语外,可能还有更多语言。

为什么NSSecureTextField不支持某些语言的密码?有安全问题吗?它会破坏OSX Keychain吗?

我需要知道,如果我覆盖这种行为,我会发现可能的副作用。

其次,是否有支持所有语言的自定义NSSecureTextField类控件?我的搜索结果为零。

1 个答案:

答案 0 :(得分:1)

NSSecureTextField限制可用的输入方法,以避免将密码文本显示为内联标记文本或编辑窗口。这也禁用了一些用于输入重音字符的多键“死键”组合。

关于输入法

某些输入法在提交之前以中间形式显示您的输入,以便您在输入文本时专门执行语言或编写系统特定的操作来解释点击和键盘输入。有些在文本视图中显示“内联”文本,文本最终会以文本形式结束,有些会在单独的浮动窗口中显示中间输入。

例如,日语的平假名输入法显示内联文本,您可以在将输入提交到文本内容之前选择不同的输入解释。另一个例子是当通过“死键”输入重音字符时,首先输入重音,然后输入基本键:重音显示为以黄色突出显示的内嵌文本。