以编程方式更改输入源语言OSx

时间:2011-05-20 16:12:33

标签: xcode macos

我无法通过代码更改 textfield 输入语言来源!
当我输入 文本字段时,我想要的是键盘语言更改为特定语言。

我已经在这里搜索过,刚刚找到了一些针对Iphone的小指南,但我正在开发 OSx App

谢谢你们再次帮助我!

修改
好 !新方法: 如果我将系统偏好设置更改为适当的语言,那么大多数问题都已解决! 日期格式化器成为现实,如果我使用此代码段,我可以获得正确的语言名称(在我得到 en 之前):

NSLocale * locale = [NSLocale currentLocale];        
NSString * localLanguage = [locale objectForKey:NSLocaleLanguageCode] ;
NSLog (@"Language : %@", localLanguage);    

但是,我想更改键盘输入语言而不更改整个系统首选项。事实上,当我进入一个特殊的文本字段时,我想将文本输入服务语言更改为其他已安装语言(我有2个)! (很清楚吗?)

1 个答案:

答案 0 :(得分:3)

好吧,我回答了自己的问题!

可能会访问此问题的人:
 要达到用户的键盘语言输入源,您必须按照以下说明操作:

  1. TIS (文字输入服务)与碳框架相关。因此,首先您必须将 carbon.h 导入您的实施文件:

    #import <Carbon/Carbon.h>

  2. 碳框架添加到您的框架资源中。要执行此操作,您必须导航到 Mac OSx应用程序目标 - &gt;链接的框架和库 - &gt;添加碳框架工作。

  3. 要更改键盘输入源,您可以使用例如controlTextDidBeginEditing委托来检测用户的textfield选择。然后您可以从已安装的语言源中选择正确的语言。例如,我安装了两种语言, en fa ,所以我在语言栏中有2个键盘布局。然后,您可以通过选择索引来选择语言。

  4. 找到您想要的语言索引,您可以使用它:
    NSArray *langs=[NSLocale preferredLanguages];
    langs 包含在您的索引可以访问的语言中。

  5. 现在,是时候使用此代码以编程方式更改文本输入源:
    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

  6. 希望它对你有所帮助。