猿问
下载APP

iPhone:以编程方式更改键盘语言

iPhone:以编程方式更改键盘语言

我打算在打开本机键盘时在iOS 5.x应用程序上提供不同的语言支持。以编程方式在本机键盘中提供此语言。有人可以指导我,我该如何支持它?我看到了碳框架,但看起来像Mac应用程序。



拉丁的传说
浏览 35回答 3
3回答

HUX布斯

不,这是不可能的 - 用户只能在设置中更改其语言。但是,如果您选择(或询问他们的偏好),您可以为用户提供“英语”键盘你这样做使用: UIKeyboardTypeASCIICapable您可以通过按下底行的“地球图标”直接在键盘上更改键盘。首先,您必须在“设置”中启用这些语言以进行输入。然后按键盘上的地球按钮将在这些语言之间切换

慕丝7291255

你可以从每个UIR应答器的iOS 7开始。UIResponder类中有textInputMode属性。它是readonly,但文档说:文本输入模式标识响应者处于活动状态时显示的语言和键盘。对于响应者,系统通常显示基于用户语言首选项的键盘。您可以重新定义此属性,并在您希望响应者使用特定键盘的情况下使用它来返回不同的文本输入模式。用户仍然可以在响应者处于活动状态时更改键盘,但切换到另一个响应者然后返回还原您指定的键盘。在我的项目中,我创建了一个子类,UITextField并定义了一个名为userDefinedKeyboardLanguage的新属性。我也覆盖了上面提到的textInputMode方法。它看起来类似于以下内容:- (UITextInputMode *) textInputMode {     for (UITextInputMode *tim in [UITextInputMode activeInputModes]) {         if ([[Utilities langFromLocale:userDefinedKeyboardLanguage] isEqualToString:[Utilities langFromLocale:tim.primaryLanguage]]) return tim;     }     return [super textInputMode];}我的Utilities类中还有一个自定义方法+(NSString *)langFromLocale:(NSString *)语言环境,如下所示:+ (NSString *)langFromLocale:(NSString *)locale {     NSRange r = [locale rangeOfString:@"_"];     if (r.length == 0) r.location = locale.length;     NSRange r2 = [locale rangeOfString:@"-"];     if (r2.length == 0) r2.location = locale.length;     return [[locale substringToIndex:MIN(r.location, r2.location)] lowercaseString];}现在,我的自定义文本字段类可以通过将userDefinedKeyboardLanguage属性设置为所需的语言来更改键盘输入语言。

慕哥6287543

我知道这是一个老问题,但这是我改变键盘语言的方法。这种方式只能将当前键盘更改为在“设置”中添加的键盘。斯威夫特3:class CustomTextField: UITextField {     private func getKeyboardLanguage() -> String? {         return "en" // here you can choose keyboard any way you need     }     override var textInputMode: UITextInputMode? {         if let language = getKeyboardLanguage() {             for tim in UITextInputMode.activeInputModes {                 if tim.primaryLanguage!.contains(language) {                     return tim                }             }         }         return super.textInputMode    }}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答