我在表格上输入UITextFields
来输入值。
其中一些字段仅接受数字。我使用UIKeyboardTypeNumbersAndPunctuation
作为keyboardType,使用shouldChangeCharactersInRange
来过滤字符。
此外,所有更正都被禁用:
textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
在仅数字字段上,触摸空格键时,键盘将更改为字母。 我知道这是默认行为。 我想忽略空格键,不想更改键盘类型。
是否有某种方法可以更改此默认行为?
PS:其他数字键盘类型不是一个选项。我需要标点符号!
由于
答案 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;
}
}