设置iPhone键盘语言

当用户点击UITextField时,我希望iPhone虚拟键盘预先显示为特定的语言(例如俄语)。 有没有办法在Cocoa代码中做到这一点?

这是一个用户定义的设置,不幸的是程序员不能搞混。

3.1+没有问题。 我设置为3.0:

self.searchBar.keyboardType = UIKeyboardTypeURL; 

并出现语言切换button。

您不能将键盘设置为所需的字符集,但下一个最好的办法是防止用户input任何其他字符集中的字符。 下面的代表可以做到这一点,当input不正确的字符时,也会震动iPhone的振动器,这很好地提醒用户他们select了错误的键盘。 这是韩国语,但容易修改为其他语言(见评论):

头文件:

 #import <Foundation/Foundation.h> #import <AudioToolbox/AudioToolbox.h> @interface KoreanOnlyInput : NSObject <UITextFieldDelegate> { NSMutableCharacterSet* koreanUnicode; } @end 

.m文件:

 #import "KoreanOnlyInput.h" @implementation KoreanOnlyInput - (id)init { self = [super init]; if (self) { // From http://www.unicodemap.org/ : // 0x1100 - 0x11FF : Hangul Jamo (256) // 0x3130 - 0x318F : Hangul Compatibility Jamo (96) // 0xAC00 - 0xD7A3 : Hangul Syllables (11172) koreanUnicode = [[NSMutableCharacterSet alloc] init]; NSRange range; range.location = 0x1100; range.length = 1 + 0x11FF - range.location; [koreanUnicode addCharactersInRange:range]; range.location = 0x3130; range.length = 1 + 0x318F - range.location; [koreanUnicode addCharactersInRange:range]; range.location = 0xAC00; range.length = 1 + 0xD7A3 - range.location; [koreanUnicode addCharactersInRange:range]; } return self; } - (void)dealloc { [koreanUnicode release]; [super dealloc]; } - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string { if ([string isEqualToString:@"\n"]) return YES; BOOL shouldChange = YES; for (int i=0; i<[string length]; i++) { if (![koreanUnicode characterIsMember:[string characterAtIndex:i]]) shouldChange = NO; } if (!shouldChange) { AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } return shouldChange; } @end 

不知道为什么你要这样做 – 我不会说俄语,如果突然出现一个俄语键盘,我会有点惊慌。

用户可以在他们的iPhone设置应用程序中select他们想要的语言。 然后确定当他们点击文本字段时出现哪个键盘。

我想这样做,因为我正在写一个语言学习应用程序。

是什么让iPhone当前的键盘select设置更糟糕(至less对我来说)是因为它不记得每个应用程序的键盘。 所以,如果你改变它的一个应用程序,它仍然是你打开的下一个应用程序相同的键盘。

我不知道关于iPhone 3.0 SDK,但从2.x,你不能控制这一点。 你可以做什么,但是,是一个自定义的键盘。 这是更多的工作,但你可以重新制作每种语言的布局。

在回答有关英文键盘的问题时(苹果公司为此devise的),您可以使用ASCII键盘 – 您可以select这种键盘:UIKeyboardTypeASCIICapable。