【问题标题】:change input source language programmatically OSx以编程方式更改输入源语言 OSx
【发布时间】:2011-05-20 16:12:32
【问题描述】:

我在通过代码更改文本字段输入语言源时遇到问题!
我只想在输入 文本字段时将键盘语言更改为特定语言。

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

谢谢你们再次帮助我!

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

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

但是,我想在不改变整个系统偏好的情况下更改键盘输入语言。事实上,当我进入一个特殊的 textfield 时,我想将 Text Input service language 更改为其他 已安装 语言(我有 2 个)! (清楚吗?)

【问题讨论】:

  • 我正在寻找这个用于 iPhone 应用程序。你能指出你找到的元素吗?我会努力回报的。另外,有人告诉我,值得向 Apple 的 Bug Reporter - radr 添加报告。大卫
  • @David DellMonte,对不起我的朋友,我的回答迟了,你可以找到你的答案here

标签: xcode macos


【解决方案1】:

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

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

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

    #import <Carbon/Carbon.h>

  2. 添加碳框架到您的框架资源。为此,您必须导航到 Mac OSx Application Target -> Linked Frameworks and Libraries -> add carbon frame work。

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

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

  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

希望对你有帮助。

【讨论】:

  • 感谢您的回复,但我在 iPhone 应用中遇到了同样的问题,我找不到 Carbon FrameWork ?
  • @Prooshani 十年后,您的回答仍然很有帮助!非常感谢!
猜你喜欢
  • 2016-07-15
  • 2018-12-15
  • 2012-01-13
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多