如何更正此代码。我只想要数字和范围不应超过10。 我的代码是
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 10) ? NO : YES;
static NSCharacterSet *charSet = nil;
if(!charSet) {
charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
}
NSRange location = [string rangeOfCharacterFromSet:charSet];
return (location.location == NSNotFound);
}
答案 0 :(得分:3)
这里的问题是第一个return
之后的任何事情都没有被执行。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 10) ? NO : YES;
// unreachable!
所以你只是检查长度,而不是输入是否为数字。改变这一行:
return (newLength > 10) ? NO : YES;
这一个:
if (newLength > 10) return NO;
它应该有效。您也可以选择更改此项:
[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
用这个:
[NSCharacterSet decimalDigitCharacterSet]