我在这里有点茫然,我显然做错了什么并且没有掌握 rangeOfString 的工作方式。
我有许多文本字段,在其中某些文本字段(电话和传真)上,我只想允许输入一小部分值 1234567890+-()
textfield: shouldChangeCharactersInRange: replacementString:
如果字符超出指定的字符集,我正在尝试使用 不返回字符。
我的方法在下面,下面是日志的一个例子。
不返回';'的代码 工作正常,代码确保它只有正在测试的电话和传真号码字段。
但是发生的情况是,无论我输入什么字符——“1”或“2”一个字母或符号,我都会得到相同的结果 NSNotFound。
知道我哪里出错了吗?
干杯
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string isEqualToString:@";"]) {
return NO;
}
if( ([textField.placeholder isEqualToString:self.locationFieldNames[phoneNumber]]) | ([textField.placeholder isEqualToString:self.locationFieldNames[faxNumber]])){
NSString *includeString = @"1234567890-()+";
if ([string rangeOfString:includeString].location == NSNotFound) {
DLog(@"%@ is NSNOTFOUND", string);
return NO;
} else {
DLog(@"%@ is !NSNOTFOUND", string);
return YES;
}
}
DLog(@"got here");
return YES;
}
以及日志中的示例
2013-11-12 12:59:19.832 SplashDL[4138:70b] -[DiveFacilityDetailViewController textField:shouldChangeCharactersInRange:replacementString:] 1 is NSNOTFOUND
2013-11-12 12:59:24.556 SplashDL[4138:70b] -[DiveFacilityDetailViewController textField:shouldChangeCharactersInRange:replacementString:] q is NSNOTFOUND
2013-11-12 12:59:26.806 SplashDL[4138:70b] -[DiveFacilityDetailViewController textField:shouldChangeCharactersInRange:replacementString:] ! is NSNOTFOUND