2009-12-26 66 views
0

我有五个字段的数字输入,每个这些字段必须在一定的数字范围内。例如,Field One应该高于40且低于100. Field Two应该高于1.25且低于5.5。剩下的就是你的想法。UIAlert文本输入

我能够制作UIAlertView,但只能用于按下按钮来计算每个字段。如果最终用户输入了五个字段中的每一个的错误数据,他们将看到五个不同的警报,并且不是真正的用户界面友好。

我想让用户输入数字,当用户进入下一个领域时,评估他们的输入,然后发送警报视图。这样用户在输入另一个字段之前就会自动知道。我认为这对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]; 
} 

回答

0

我想说调用UITextFieldDelegate的:

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

方法,并检查它的输入验证。

顺便说一句,为什么你会显示很多警报?我会建议创建一个NSString,将通过每个if并添加类似“字段1的输入无效”。等等,并最终显示一个UIAlertView的所有细节。 这将是用户友好和国际海事组织比你目前的解决方案更好。

这只是我的头脑,但我希望这会对你有所帮助。 〜Natanavra。

+0

我很困惑。我是否使用UITextFieldDelegate创建输入处理或创建NSString? – HollerTrain 2009-12-29 01:54:17

+0

当用户从textField移动到另一个时,将调用UITextFieldDelegate方法,允许您在输入后单独检查每个字段。 NSString创建正在堆叠您的消息,然后在一个Alert中显示所有内容。 – natanavra 2009-12-29 14:28:48

+0

我是否将textFieldDidEndEditing连接到每个字段?那么它会检查每个字段? – HollerTrain 2010-01-03 00:00:20