0

我有 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];
4

4 回答 4

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

    }  
}

我希望你有帮助。

于 2012-05-14T04:54:42.617 回答
0

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

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

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

于 2012-05-14T04:42:26.140 回答
0

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

- (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;
}
于 2012-05-14T04:45:00.383 回答
0

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

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

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

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

于 2012-05-14T04:50:47.727 回答