8

当用户键入空格时,我试图将 UIKeyboardType 更改为字母键盘,以反映键入撇号的效果。但是,我的代码不会改变键盘的外观,直到用户关闭键盘然后再将它带回来。

编辑:为了澄清,键盘类型以 UIKeyboardTypeNumbersAndPunctuation 开头,我想更改为 ASCIICapable,因为典型的用户输入是“#cups 面粉”的形式。我意识到 ASCIICapable 键盘内置了此功能,因此展示支持 ASCII 的键盘但首先显示数字/标点符号会起作用。

这是我的代码:

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

    if ([string isEqualToString:@" "]) {
        textField.keyboardType = UIKeyboardTypeASCIICapable;
    }

return YES;
}
4

1 回答 1

10

关闭键盘,然后再次成为第一响应者。在我的代码中,我为文本字段 *tf 创建了一个 IBOutlet。有效。

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

    if ([string isEqualToString:@" "]) {
        self.tf.keyboardType = UIKeyboardTypeNumberPad;
        [textField resignFirstResponder];
        [self.tf becomeFirstResponder];
    }

    return YES;
}
于 2012-06-19T02:26:14.000 回答