我有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];
答案 0 :(得分: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];
}
}
我希望你能提供帮助。
答案 1 :(得分:0)
这扰乱了应用程序的类型,不是吗?你想看的是UITextfield委托方法。将viewController设置为textields委托,并使其响应UITextFieldDelegate协议。
我将实现textField:shouldChangeCharactersInRange:replacementString方法并检查replacementString中是否有不需要的字符。
但是,如果不包含不需要的字符,我想我只会返回NO。然后,当用户输入您想要的东西时,没有任何反应。
答案 2 :(得分: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;
}
答案 3 :(得分:0)
您可以使用以下方法检查它是否为数字: -
NSString *yourString= @"121212";
NSCharacterSet *decimalNUmSet= [NSCharacterSet decimalDigitCharacterSet];
BOOL isNum= ([[yourString stringByTrimmingCharactersInSet:decimalNUmSet] isEqualToString:@""] ||
[[yourString stringByTrimmingCharactersInSet:decimalNUmSet] isEqualToString:@"."]);
这里第二部分也包括十进制数字。
另一种方法是向用户提供数字键盘,以便他只能输入数字。