iPhone:以編程方式更改鍵盤語言我打算在打開本機鍵盤時在iOS 5.x應用程序上提供不同的語言支持。以編程方式在本機鍵盤中提供此語言。有人可以指導我,我該如何支持它?我看到了碳框架,但看起來像Mac應用程序。
3 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
你可以從每個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
TA貢獻1831條經驗 獲得超10個贊
我知道這是一個老問題,但這是我改變鍵盤語言的方法。
這種方式只能將當前鍵盤更改為在“設置”中添加的鍵盤。
斯威夫特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 }}
- 3 回答
- 0 關注
- 597 瀏覽
添加回答
舉報
0/150
提交
取消