English 中文(简体)
设置iPhone键盘语言
原标题:
  • 时间:2008-12-01 11:08:51
  •  标签:

当用户点击UITextField时,我希望iPhone虚拟键盘预设为特定语言(例如俄语)。在Cocoa代码中是否有这样的方法?

问题回答

这是用户自定义的设置,程序员不能随意更改,非常遗憾。

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

self.searchBar.keyboardType = UIKeyboardTypeURL;

语言切换按钮已出现。

您不能将键盘设置为所需的字符集,但最好的方法是防止用户输入来自任何其他字符集的字符。下面的委托可以做到这一点,并且在输入错误字符时会振动iPhone的振动器,这可以很快地提醒用户选择了错误的键盘。这是针对韩语的,但很容易修改为其他语言(请参见评论):

头文件:

#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:@"
"])
        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设置应用程序中选择所需的语言。然后,当他们点击文本框时,决定显示哪种键盘。

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

iPhone当前的键盘选择设置更糟糕(至少对我来说)的是,它不记住每个应用程序的键盘。因此,如果您为一个应用程序更改它,它将保持相同的键盘,直到您打开下一个应用程序。

我不知道iPhone 3.0 SDK,但在2.x版本中,您无法控制此功能。不过,您可以制作自定义键盘。虽然需要更多的工作,但您可以为每种语言重新制作布局。

回答有关英语键盘的问题-苹果已为此设计-您可以使用ASCII键盘-您可以选择UIKeyboardTypeASCIICapable。





相关问题
热门标签