0

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

所以他可以很容易地输入诸如“34 loops”之类的东西。

4

2 回答 2

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;
}
于 2012-10-31T19:43:18.590 回答
1

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

这一切都开始变得越来越难以涵盖每个案例。但更重要的是,随着键盘开始在他们身上改变,它开始让用户感到厌烦。这使得仅输入文本变得非常困难。我从来没有见过一个应用程序按照你的建议去做,这是有充分理由的。

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

于 2012-10-31T20:10:53.860 回答