用户点击空格后,将UITextField键盘从数字切换到字母

时间:2012-10-31 19:32:25

标签: objective-c uitextfield

我希望我的键盘在用户点击空间后从UIKeyboardTypeNumbersAndPunctuation模式更改为普通文本模式。

因此他可以轻松输入类似“34循环”的内容。

2 个答案:

答案 0 :(得分:3)

好的,您无法获得直接输入通知,但我能想到的解决方案。

实施以下委托方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

替换字符串,正如其名称所示,包含要替换文本字段中现有字符串的字符串。你可以做的是检查这个字符串的最后一个字符,如果它确实是一个空格,那么改变键盘类型:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    char lastCharacter = [string characterAtIndex:[string length] - 1]; //Get the last input character in the ext field.
    if(lastCharacter == ' ')
    {
        //The last character is a space, so...
        textField.keyboardType = UIKeyboardTypeDefault;
        [textField resignFirstResponder];
        [textField becomeFirstResponder];
    }
    return YES;
}

答案 1 :(得分:1)

Leonnears给出的答案主要回答了这个简单的案例,但是你需要考虑很多问题。如果用户键入34,然后输入空格,然后删除,会发生什么?当用户将插入符号从loops的末尾移动到数字部分的某个位置时会发生什么?

这一切都开始变得越来越难以涵盖每个案例。但更重要的是,当键盘开始改变它们时,它开始让用户烦恼。这使得输入文本变得非常困难。我从未见过应用程序做你提出的建议,而且有充分的理由。

让用户像以前一样使用普通键盘。每个人都知道如何在字母和数字之间切换。键盘自动更改将是不寻常和令人困惑的。