如何从文本字段中消除某个字符的出现并使其仅出现在前缀中

时间:2013-05-03 06:50:12

标签: ios objective-c uitextfield

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

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

2 个答案:

答案 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时自动插入“+”