触摸空格键时如何防止键盘从数字更改为字母?

时间:2010-01-15 12:57:48

标签: iphone iphone-sdk-3.0 uitextfield

我在表格上输入UITextFields来输入值。 其中一些字段仅接受数字。我使用UIKeyboardTypeNumbersAndPunctuation作为keyboardType,使用shouldChangeCharactersInRange来过滤字符。

此外,所有更正都被禁用:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
textField.autocorrectionType =  UITextAutocorrectionTypeNo;
textField.autocapitalizationType =  UITextAutocapitalizationTypeNone;

在仅数字字段上,触摸空格键时,键盘将更改为字母。 我知道这是默认行为。 我想忽略空格键,不想更改键盘类型。

是否有某种方法可以更改此默认行为?

PS:其他数字键盘类型不是一个选项。我需要标点符号!

由于

1 个答案:

答案 0 :(得分:4)

我认为不可能修改键盘行为。

但是,您可以从UITextFieldDelegate协议实现textField:shouldChangeCharactersInRange:replacementString:来拦截这样的空格(和撇号),它似乎有效:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) {
        NSMutableString *updatedString = [NSMutableString stringWithString:textField.text];
        [updatedString insertString:string atIndex:range.location];
        textField.text = updatedString;
        return NO;
    } else {
        return YES;
    }
}