我有一个UITextField,允许用户输入电话号码但我想测试UITextField,这样用户就不应该在文本字段中除了前缀之外的任何地方输入“+”。
我有什么方法可以测试这种情况吗? 这是我到目前为止所做的,请注意这是第四个文本字段,所以我使用标记将其与其他文本字段区分开来
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag==3)
{
static NSCharacterSet *charSet = nil;
if(!charSet) {
charSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789+"] invertedSet];
}
NSRange location = [string rangeOfCharacterFromSet:charSet];
return (location.location == NSNotFound);
// delete the characters backspace
if ([string isEqualToString:@""])
{
return YES;
}
}
return YES;
}
上述条件只允许那些数字和“+”符号 感谢
答案 0 :(得分:1)
尝试这样做除了第一个位置之外别处其他任何地方,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag==3)
{
if([textField.text length]>1){
if([string isEqualToString:@"+"])
{
return NO;
}
else
{
return YES;
}
}
return YES;
}
}
答案 1 :(得分:0)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag==3)
{
static NSCharacterSet *charSet = nil;
if(!charSet) {
charSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789+"] invertedSet];
}
if([textField.text length]>0){
if([string isEqualToString:@"+"])
{
return NO;
}
else
{
NSRange location = [string rangeOfCharacterFromSet:charSet];
return (location.location == NSNotFound);
return YES;
}
}
if ([string isEqualToString:@""])
{
return YES;
}
}
return YES;
}
我将textfield.length更改为0因为我在textfieldShouldBeginEditing时自动插入“+”