我希望我的键盘在用户点击空格后从 UIKeyboardTypeNumbersAndPunctuation 模式更改为普通文本模式。
所以他可以很容易地输入诸如“34 loops”之类的东西。
我希望我的键盘在用户点击空格后从 UIKeyboardTypeNumbersAndPunctuation 模式更改为普通文本模式。
所以他可以很容易地输入诸如“34 loops”之类的东西。
好的,您无法获得直接输入通知,但我能想到一个解决方案。
实现以下委托方法:
- (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;
}
Leonneas 给出的答案大多回答了简单的情况,但需要考虑的问题很多。如果用户键入34
,然后是空格,然后删除,会发生什么?当用户将插入符号从末尾移动loops
到数字部分的某个位置时会发生什么?
这一切都开始变得越来越难以涵盖每个案例。但更重要的是,随着键盘开始在他们身上改变,它开始让用户感到厌烦。这使得仅输入文本变得非常困难。我从来没有见过一个应用程序按照你的建议去做,这是有充分理由的。
让用户像习惯一样使用普通键盘。每个人都知道如何在字母和数字之间切换。让键盘自动更改将是不寻常且令人困惑的。