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

Pro*_*ani 1 macos xcode

我在通过代码更改文本字段输入语言源时遇到问题!
所有我想要的是改变键盘语言时,我曾经向特定的语言输入一个文本框

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

再次感谢帮助我的各位!

编辑:
好吧!新方法:如果我将系统首选项更改为适当的语言,那么大部分问题都解决了!日期格式化程序变为真,如果我使用此代码片段,我可以获得正确的语言名称(在我刚刚获得en之前):

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

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

Pro*_*ani 5

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

谁可能会访问此问题:
要获得用户的键盘语言输入源,您必须遵循以下说明:

  1. TIS(文本输入服务)与Carbon 框架有关。因此,首先您必须将carbon.h导入到您的实现文件中:

    #import <Carbon/Carbon.h>

  2. 碳框架添加到您的框架资源中。为此,您必须导航到Mac OSx 应用程序目标 -> 链接框架和库 -> 添加碳框架工作。

  3. 要更改键盘输入源,您可以使用例如controlTextDidBeginEditing委托来检测用户的textfield选择。然后您可以从已安装的语言源中选择正确的语言。例如,我安装了两种语言,enfa,所以我在语言栏中有 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

希望对你有帮助。