0

我有一个 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;
 }

上述条件只允许那些数字和“+”符号谢谢

4

2 回答 2

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;
    }
}
于 2013-05-03T06:51:30.733 回答
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 时自动在开头插入一个“+”

于 2013-05-03T07:08:49.123 回答