【问题标题】:Editing after enter phone Number not working properly输入电话号码后编辑无法正常工作
【发布时间】:2015-06-24 06:48:36
【问题描述】:

iOS- 使用下面的代码,我可以自动添加连字符,但无法在文本字段中正确进行编辑:- 编辑就像单击以在填充的数字之间插入任何数字时一样,这将在数字的末尾进行编辑并且进一步不要正确删除该号码。任何人都可以帮我解决IOS 假设用户第一次输入像 123-456-7890 这样的号码。之后他想用 7 更改数字 4,然后 7 数字没有插入到正确的位置。并且会超过 10 位数字的限制。我想解决这个问题。给我编辑代码的解决方案。不要只擦除代码中的空格并再次显示给我

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
   {    
      if(textField == txtUserName)
       {
            if (range.location == 12)
           {
              return NO;
             }
          if (range.length == 0 && ![[NSCharacterSet decimalDigitCharacterSet]   characterIsMember:[string characterAtIndex:0]])
            {
             return NO;
             }       
        if (range.length == 0 && (range.location == 3 || range.location == 7))
           {
              txtUserName.text = [NSString stringWithFormat:@"%@-  %@",txtUserName.text,string];
              return NO;
             }
          if (range.length == 1 &&(range.location==4 ||range.location ==7))      
           {
               range.location--;
               range.length = 2;
                txtUserName.text = [txtUserName.text  stringByReplacingCharactersInRange:range withString:@""];
              NSLog(@"Nisha..%@",txtUserName.text);
               return NO;
            }
          }     
         return YES;
    }

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    你需要删除空格

    txtNumber.text = [NSString stringWithFormat:@"%@-%@",txtNumber.text,string];
    

    因为空格也算作一个字符。

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
         if(textField == txtNumber)
         {
            if (range.location == 12)
            {
                return NO;
            }
            if (range.length == 0 && ![[NSCharacterSet decimalDigitCharacterSet]   characterIsMember:[string characterAtIndex:0]])
            {
                return NO;
            }
            if (range.length == 0 && (range.location == 3 || range.location == 7))
            {
                txtNumber.text = [NSString stringWithFormat:@"%@-%@",txtNumber.text,string];
                return NO;
            }
            if (range.length == 1 &&(range.location==4 ||range.location ==7))
            {
                range.location--;
                range.length = 2;
                txtNumber.text = [txtNumber.text  stringByReplacingCharactersInRange:range withString:@""];
                NSLog(@"Nisha..%@",txtNumber.text);
                return NO;
            }
        }
        return YES;
    }
    

    【讨论】:

    • 失败代码...有两个错误你是否正确测试你的代码@Mohak
    • @Mohak.. 我的问题是我无法正确地在文本字段中进行编辑。否则代码将正常工作。没有任何空间问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多