当用户在iPhone应用程序的UITextField中input值时如何显示特定的语言键盘?

我想build立一个支持多种语言的iPhone应用程序。 在那里我想input用户在我的应用程序设置中从一组语言中select的语言的值。 因此,它应该显示选定的语言键盘。

例如:如果用户从我的应用程序的设置中select了法语。 然后在我的应用程序的所有UITextField中,用户应该能够用法语input值。 因此,当键盘打开时,我需要确保它是法语键盘,它每次显示,而不是默认的语言键盘。

所以问题是,是否可以显示特定的语言键盘,每当用户点击UITextField基于在应用程序的设置中select的语言? 如果是,那么如何?

无需更改设备语言,无论是从设置还是通过编码,都无法做到这一点。 //西class牙语(es)。

NSArray *langOrder = [NSArray arrayWithObjects:@"es", nil]; [[NSUserDefaults standardUserDefaults] setObject:langOrder forKey:@"AppleLanguages"]; 

这只会改变语言顺序

您不能根据您select的语言来控制键盘。 用户通过设置应用程序select他们想要的键盘,并且可以使用键盘上的地球图标在它们之间切换。

我去扔苹果文件pipe理键盘没有一个单词说你想要什么。 并发现下面的线
在这里输入图像说明
The input method and layout for the keyboard is determined by the user's language preferences.

你需要为你的UITextView覆盖textInputMode

 @implementation UITextView (Localization) - (UITextInputMode *) textInputMode { for (UITextInputMode *inputMode in [UITextInputMode activeInputModes]) { if ([[self langFromLocale:[self localeKey]] isEqualToString:[self langFromLocale:inputMode.primaryLanguage]]) return inputMode; } return [super textInputMode]; } - (NSString*) localeKey { NSArray* lang = [[NSUserDefaults standardUserDefaults]objectForKey:@"AppleLanguages"]; NSString* currentLang = lang[0]; return currentLang; } - (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]; } 

你现在可以改变inputlang:

 [[NSUserDefaults standardUserDefaults] setObject:@[@"fr"] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize];