UIKeyboardType是否被语言的默认键盘覆盖?

时间:2012-11-29 05:10:31

标签: iphone uikeyboard uikeyboardtype

我目前正在开发一个主要是日语(中级英语)市场的应用程序,我发现我无法为文本字段设置UIKeyboardType并且如果使用十键/轻弹样式则可以让它实际工作日语键盘。即使UIKeyboardType应该做出适当的回应,

userIdField = [[[UITextField alloc] initWithFrame:CGRectMake(120, 5, 185, 35)]autorelease];
userIdField.delegate = self;
userIdField.keyboardType = UIKeyboardTypeASCIICapable;
userIdField.autocorrectionType = UITextAutocorrectionTypeNo;
userIdField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
userIdField.returnKeyType = UIReturnKeyDone;
userIdField.autocapitalizationType = UITextAutocapitalizationTypeNone;
userIdField.backgroundColor = [UIColor clearColor];
[cell addSubview:userIdField];

当我点击文本字段时,它将打开默认的日语十键风格键盘。我尝试了UIKeyboardTypeASCIICapableUIKeyboardTypeURLUIKeyboardTypeEmailAddressUIKeyboardTypeNamePhonePad,并且始终显示默认的十键日语键盘。我知道正在读取代码,因为设置UIKeyboardTypePhonePad没有任何缺陷,但由于某种原因,手机除了默认的日语十键键盘外不会显示任何内容。

有没有办法解决这个问题,或者这是一个自时间开始以来就存在的错误?如何强制用户使用只能输入字母,数字,“_ /。字符?

的键盘

使用韩文(朝鲜语)键盘,偶尔工作 - ASCII键盘正常,网页键盘出现Hangul,带有.com按钮。对于ASCIICapable,查看UITextInputTraits.h文件,它说: UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active 这没有任何意义,因为韩语和日语都是非ASCII,但是Hangul + ASCIICapable = ASCII(虽然它应该是朝鲜语,因为它是非ascii),而日语十键+ ASCIICapable =日语十键。

我看到其他有关以编程方式更改键盘语言的帖子,这是无法完成的,但这个问题更侧重于询问为什么UIKeyboardType指定的键盘类型没有出现。

1 个答案:

答案 0 :(得分:0)

显示日语十键键盘的原因是因为它技术上是一个ASCIICapable键盘,即使您必须先单击ABC按钮使键盘更改为ASCII输入。我已经想到了解决这个问题的方法,尽管它很复杂并且充满了问题:

  1. 2个文本字段,其中一个是另一个。顶部文字字段隐藏
  2. 底部文本字段将secureTextEntry设置为YES,这会强制使用实际的ASCII键盘,但会混淆输入的文本
  3. 当用户点按底部文本字段时,顶部文本字段将显示
  4. 当在键盘上输入文本时,它首先进入底部textField,然后设置顶部textField的文本。否则,您只需获取用于隐藏文本输入的完整黑圈。
  5. 如果你犯了错误并且想要编辑文本,那么你必须做一堆其他代码才能使它正常工作,分配第一响应者等(比如确保输入文本时,它输入到正确位置的底部文本区域。)

    这显然不是最佳解决方案。