【问题标题】:how to show alert when user enter other then number value in textfield当用户在文本字段中输入其他数字值时如何显示警报
【发布时间】:2012-05-14 04:35:42
【问题描述】:

我有 iphone 应用程序,我在其中输入任何数值,例如 10 2 0 1 0.2 等,如果用户输入任何文本,它应该提醒输入数字,而不是这个。

    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Value Must Be In Number " delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    试试这个代码:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        if (textField==txtMobileNo) 
        {
            [self validatePhone];
        }else
        {
            [textField resignFirstResponder];
    
        }
        // called when 'return' key pressed. return NO to ignore.
        return YES;
    }
    
    - (BOOL) validatePhone
    {
        NSString *phoneRegex = @"^+(?:[0-9] ?){6,14}[0-9]$"; 
        NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; 
        if ([phoneTest evaluateWithObject:txtMobileNo.text] == YES) 
        {
            NSLog(@"proper phone nO ");        
            return YES;   
        }
        else
        {
            UIAlertView *alert=[[UIAlertView alloc] initWithTitle:nil message:@"Please,Enter Your Person proper phone no" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil  ];
            [alert show];
            [alert release];
            NSLog(@"phone no. not in proper format");
            return NO;
            [txtMobileNo becomeFirstResponder];
    
        }  
    }
    

    希望对你有所帮助。

    【讨论】:

    • 我只想输入一个数字,只有当我在你的代码 abc 中输入它显示错误但当我输入 5 时它也会显示错误原因
    • 您只输入任何 0 -9 数字,但输入另一个字符然后它会向您发出警报消息。
    • 我只尝试了你的代码,但是当干净的构建它工作得很好,谢谢,我发布了另一个图表你能看到如果你能帮助我,链接stackoverflow.com/questions/10577715/…
    【解决方案2】:

    这会破坏应用程序,不是吗?您要查看的是 UITextfield 委托方法。将您的 viewController 设置为 textields 委托,并使其响应 UITextFieldDelegate 协议。

    我会实现 textField:shouldChangeCharactersInRange:replacementString 方法并检查 replacementString 是否有不需要的字符。

    但我想如果那里包含不需要的字符,我会返回 NO,而不是显示警报。然后,当用户输入的内容不是您想要的内容时,什么也不会发生。

    【讨论】:

    • 我的意思是如果你输入 ABC 而不是关闭 1 2 10 那么它可能会显示用户只输入数字值用户如何知道他是否输入了我必须输入任何数字的错误值
    • 可以发出警报。如果您键入并出现警报,请认为它会破坏流程。标记文本字段,以便清楚地首先需要数字,或者显示一个 uilabel 告诉用户只输入数字。
    【解决方案3】:

    您可以使用以下方法检查它是否为数字:-

    NSString *yourString= @"121212";
    NSCharacterSet *decimalNUmSet= [NSCharacterSet decimalDigitCharacterSet];
    BOOL isNum= ([[yourString stringByTrimmingCharactersInSet:decimalNUmSet] isEqualToString:@""] || 
                          [[yourString stringByTrimmingCharactersInSet:decimalNUmSet] isEqualToString:@"."]);
    

    这里的第二部分也包括十进制数。

    另一种方法是向用户显示一个数字键盘,以便他只能输入数字。

    【讨论】:

      【解决方案4】:

      您验证输入的字符并在此委托中执行您的逻辑,

      - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
      
      // your logic to restriction goes here.like check the entered char and through alert
      }
      
      
      
      
      -(BOOL) validateNumericValue:(NSString*) textValue
      {   
          NSNumberFormatter* numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
          NSNumber* number = [numberFormatter numberFromString:textValue];
      
          if (number != nil) 
          {
              return YES;
          }
          return NO;
      }
      

      【讨论】:

      • 我知道这个验证在这里如何执行验证逻辑我的问题是
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多