0

我有两个 UITextfields -textfield1textfield2.

我只是在做两个文本字段的乘法。textfield2具有固定值,textfield1用户可以自行设置值。

现在,我面临一个问题。如果用户将值设置为 0,那么我将显示一条警报消息。

if ([textfield1.text isEqualToString:@"0"])
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:APP_NAME message:@"You can not set Zero." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
}

但是,如果用户设置了多个零或十进制零(0.0 或 0.00),则我无法显示警报消息。

4

3 回答 3

5

不要使用字符串。转换为数字:

double value1 = [textfield1.text doubleValue];
if (value1 == 0.0) {
    // show alert
}

更新:实际上,使用doubleValue不是一个好主意,因为您想支持来自世界各地的用户。一些用户可能会输入值,0.5而另一些用户可能会使用0,5等。最好使用 anNSNumberFormatter将输入的文本转换为数字。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSNumber *number = [formatter numberFromString:textfield1.text];
double value1 = [number doubleValue];
于 2013-04-15T06:21:45.173 回答
1
float value1 = [textfield1 text] floatValue];
int value2 = [textfield1 text] intValue];
if (value1 == 0.0 || value2 == 0) {
    // show alert
}
于 2013-04-15T06:30:44.767 回答
0

您可以将 < UITextFieldDelegate > 添加到您的 xxclass.h

并在 xxclass.m 中实现委托

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

    if([textField.text isEqualToString:@""] && [string isEqualToString:@"0"]){
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:APP_NAME message:@"You can not set Zero." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show];
    return NO; 
    }

    return YES;
}
于 2013-04-15T06:28:18.057 回答