我无法通过代码更改 textfield 输入语言来源!
当我输入 文本字段时,我想要的是将键盘语言更改为特定语言。
我已经在这里搜索过,刚刚找到了一些针对Iphone的小指南,但我正在开发 OSx App 。
谢谢你们再次帮助我!
修改
好 !新方法:
如果我将系统偏好设置更改为适当的语言,那么大多数问题都已解决!
日期格式化器成为现实,如果我使用此代码段,我可以获得正确的语言名称(在我得到 en 之前):
NSLocale * locale = [NSLocale currentLocale];
NSString * localLanguage = [locale objectForKey:NSLocaleLanguageCode] ;
NSLog (@"Language : %@", localLanguage);
但是,我想更改键盘输入语言而不更改整个系统首选项。事实上,当我进入一个特殊的文本字段时,我想将文本输入服务语言更改为其他已安装语言(我有2个)! (很清楚吗?)
答案 0 :(得分:3)
好吧,我回答了自己的问题!
可能会访问此问题的人:
要达到用户的键盘语言输入源,您必须按照以下说明操作:
TIS (文字输入服务)与碳框架相关。因此,首先您必须将 carbon.h 导入您的实施文件:
#import <Carbon/Carbon.h>
将碳框架添加到您的框架资源中。要执行此操作,您必须导航到 Mac OSx应用程序目标 - &gt;链接的框架和库 - &gt;添加碳框架工作。
要更改键盘输入源,您可以使用例如controlTextDidBeginEditing
委托来检测用户的textfield
选择。然后您可以从已安装的语言源中选择正确的语言。例如,我安装了两种语言, en 和 fa ,所以我在语言栏中有2个键盘布局。然后,您可以通过选择索引来选择语言。
找到您想要的语言索引,您可以使用它:
NSArray *langs=[NSLocale preferredLanguages];
langs 包含在您的索引可以访问的语言中。
现在,是时候使用此代码以编程方式更改文本输入源:
NSArray*langsArray=(NSArray*)TISCreateInputSourceList(NULL,FALSE); //make a list of installed languages
TISInputSourceRef faSource=(TISInputSourceRef)[langsArray objectAtIndex:1]; //my second language is farsi (persian)
TISSelectInputSource(faSource); // now second language selected for keyboard input resource
希望它对你有所帮助。