【问题标题】:how to eliminate the occurence of a certain character from a textfield and have it present only at the prefix如何消除文本字段中某个字符的出现并使其仅出现在前缀处
【发布时间】:2013-05-03 06:50:11
【问题描述】:

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

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

【问题讨论】:

    标签: ios objective-c uitextfield


    【解决方案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;
        }
    }
    

    【讨论】:

    • 是的,太好了,我修改了答案,我会发布它并将您的答案标记为正确,谢谢
    【解决方案2】:
     - (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 时自动在开头插入“+”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      相关资源
      最近更新 更多