设置iPhone键盘语言

时间:2008-12-01 11:08:52

标签: iphone cocoa-touch keyboard

当用户点击UITextField时,我希望iPhone虚拟键盘预设为特定语言(例如俄语)。有没有办法在Cocoa代码中执行此操作?

7 个答案:

答案 0 :(得分:7)

这是用户定义的设置,不幸的是程序员无法搞砸。

答案 1 :(得分:2)

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

self.searchBar.keyboardType = UIKeyboardTypeURL;

出现了语言切换按钮。

答案 2 :(得分:1)

您无法将键盘设置为所需的字符集,但最好的办法是防止用户从任何其他字符集输入字符。下面的代表执行此操作,并在输入错误字符时嗡嗡叫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:@"\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

答案 3 :(得分:0)

不确定你为什么要这样做 - 我不会说俄语,如果突然出现俄语键盘,我会有点担心。

用户可以在iPhone设置应用中选择他们想要的语言。然后确定在点击文本字段时显示哪个键盘。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我不知道iPhone 3.0 SDK,但是从2.x开始,你无法控制它。但是,你可以做的是制作一个自定义键盘。这项工作要多得多,但您可以重新制作每种语言的布局。

答案 6 :(得分:0)

在回答有关英语键盘的问题时 - Apple为此设计了 - 您可以使用ASCII键盘 - 您可以选择:UIKeyboardType ASCII Capable。