2012-11-29 98 views
0

我目前正在开发一个主要是日语(辅助英语)市场的应用程序,并且我发现我无法为文本字段设置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]; 

当我点击文本字段,将打开默认的日本十数字式键盘。我试过UIKeyboardTypeASCIICapable,UIKeyboardTypeURL,UIKeyboardTypeEmailAddress,UIKeyboardTypeNamePhonePad,他们总是显示默认的tenkey日文键盘。我知道代码正在被读取,因为设置UIKeyboardTypePhonePad的工作没有缺陷,但由于某些原因,手机将不会显示除默认日文键盘之外的任何内容。

有什么方法可以解决这个问题吗?或者这是自创建以来就存在的错误吗?如何强制用户使用只能输入字母,数字,“_ /。字符的键盘”

使用Hangul(韩语)键盘时,它会偶尔工作 - ASCII键盘输入正常,URL键盘出现对于ASCIICapable,看着UITextInputTraits.h文件,它说: UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active 这是没有任何意义的,因为韩文和日文都是非ASCII的,但Hangul + ASCIICapable = ASCII(尽管它应该是韩语,因为它是非ascii),而日本的tenkey + ASCIICapable =日本的tenkey。

我看到其他文章以编程方式改变键盘语言,这是无法完成的,但这个问题更关注于问为什么有点由UIKeyboardType指定的键盘不显示。

回答

0

为什么显示日本十数字键盘的原因是因为它是技术上的ASCIICapable键盘,即使你必须先点击ABC按钮使键盘更改ASCII输入。我曾想过一种方法来解决这个问题,尽管它很复杂且充满了问题:

  1. 2 textfields,其中之一。顶级文本框隐藏
  2. 底部文本框具有secureTextEntry设置为YES,这迫使实际ASCII键盘,但混淆进入,顶部文本框变为显示
  3. 当输入的文字文本
  4. 当用户点击底部的文本框键盘,它首先到底部textField,然后设置顶部textField的文本。否则,您只会看到用于隐藏文字输入的黑色圆圈。

如果你犯了一个错误,想要编辑文本,那么你必须做一堆其他代码才能使它正确工作,分配第一响应者等等(例如确保文本得到时输入时,它会在正确的地方输入到底部的文本框中)。

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