ios - 输入电话号码后编辑无法正常工作

标签 ios objective-c

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;
    }

最佳答案

需要去掉

中的空格
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;
}

关于ios - 输入电话号码后编辑无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019543/

相关文章:

ios - 为什么嵌入 UINavigationController 中的 UIVewController 的第一个 subview 的位置会改变?

ios - dismissModalViewControllerAnimated 需要先完成动画,然后再从 super View 中删除?

ios - 如何使用 Appium Xcode Instruments 执行单个命令

iphone - 学习 iOS 开发的核​​心数据

iphone - 如何在导航栏上添加 2 个按钮?

iOS 多 Collection View

ios - 什么时候调用 applicationWillTerminate?

ios - CollectionView Label 多行标签自动布局在小屏幕 iOS 设备上陷入困境

objective-c - 如何使用 prepareForSegue 方法在目标 View 中设置 UIStepper 值?

objective-c - setValuesForKeysWithDictionary 可以与嵌套字典一起使用吗