UIAlert在文本输入上

时间:2009-12-26 22:30:56

标签: iphone

我有五个输入数字的字段,每个字段必须在一定的数字范围内。例如,第一场应该在40以上且在100以下。第二场应该高于1.25且低于5.5。你得到了其余的想法。

我能够创建一个UIAlertView,但仅适用于按下按钮来计算每个字段。如果最终用户为五个字段中的每个字段输入错误的数据,则他们将看到五个不同的警报,并且实际上不是UI友好的。

我希望在用户输入数字的位置,当用户进入下一个字段时,评估他们的输入,然后发送警报视图。这样,用户在输入另一个字段之前就会自动知道。我认为这对UI来说会更容易。但是,我不知道最好的方法,我只是学习iPhone SDK和ObjC。

这是我用于buttonPressed按钮的代码,正如您所看到的那样,您可以看到五个(本例中为四个)字段中的每个字段,将它们分配给变量,创建两个测试UIAlerts,并在输出之前进行一些数学运算答案。请记住,我在这里是一个n00b .....

//calculate total of variables when user clicks button
-(IBAction) submitYourName;
{
    /*********************************************************
     declare our variables to strings
     ********************************************************/
    NSString *userNameOne = txtUserName.text;
    float numOne = [userNameOne intValue];
    NSString *userNameTwo = txtUserName2.text;
    float numTwo = [userNameTwo intValue];
    NSString *userNameThree = txtUserName3.text;
    float numThree = [userNameThree intValue];
    NSString *userNameFour = txtUserName4.text;
    float numFour = [userNameFour intValue];

    /*********************************************************
     allow error handling for our numbers
     ********************************************************/
    if(numOne < 40 || numOne > 100)
    {
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"User Error"
                              message:@"Your age must be at least 40 years old and less than 100 years old"
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }

    if(numTwo < 40 || numTwo > 100)
    {
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"User Error"
                              message:@"Your age must be at least 40 years old and less than 100 years old"
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }


    /*********************************************************
     calculate our mathematics
     ********************************************************/
    float one = 3;
    float main = numOne * one;


    /*********************************************************
     produce answer
     ********************************************************/
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"you input %2.2f %2.2f %2.2f %2.2f", main, numTwo, numThree, numFour];
}

1 个答案:

答案 0 :(得分:0)

我想说调用UITextFieldDelegate:

- (void)textFieldDidEndEditing:(UITextField *)textField;

方法,并在其中检查输入验证。

顺便说一句,你为什么要显示太多警报?我建议创建一个NSString,它将遍历每个if并添加类似“字段1的输入无效”的内容。等等,最后显示一个带有所有细节的UIAlertView。 这将是用户友好的,IMO比您当前的解决方案更好。

这只是我的想法,但我希望这对你有所帮助。 〜纳塔纳瓦拉。