【问题标题】:Setting the iPhone keyboard language设置 iPhone 键盘语言
【发布时间】:2010-09-24 17:42:52
【问题描述】:

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

【问题讨论】:

    标签: iphone cocoa-touch keyboard


    【解决方案1】:

    这是一个用户定义的设置,不能被程序员弄乱,很遗憾。

    【讨论】:

      【解决方案2】:

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

      self.searchBar.keyboardType = UIKeyboardTypeURL;
      

      出现语言切换按钮。

      【讨论】:

        【解决方案3】:

        您无法将键盘设置为所需的字符集,但最好的办法是防止用户输入来自任何其他字符集的字符。下面的代表会执行此操作,并且在输入错误字符时还会使 iPhone 的振动器发出嗡嗡声,这可以很好地快速提醒用户他们选择了错误的键盘。这适用于韩语,但很容易修改为其他语言(参见 cmets):

        头文件:

        #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
        

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 如果是俄语词典你就不会惊慌了。
          • 请回答问题,或简单地为问题添加评论
          【解决方案5】:

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

          是什么让 iPhone 上的当前键盘选择设置变得更糟(至少对我而言)是它不记得每个应用程序的键盘。因此,如果您为一个应用更改它,它在您打开的下一个应用中仍然是相同的键盘。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              回答有关英文键盘的问题 - Apple 确实为此设计 - 您可以使用 ASCII 键盘 - 您可以选择:UIKeyboardTypeASCIICapable。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-02-19
                • 1970-01-01
                • 1970-01-01
                • 2012-09-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多