下面是方案。


我在控制器的viewDidLoad中创建了一个UIAlertView,在其中显示警报。

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check"
                                            message:@"Ok"
                                           delegate:nil
                                  cancelButtonTitle:@"Ok"
                                  otherButtonTitles:nil, nil];
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput];

我称它为[alert show],并显示它。
当用户按“确定”时,它将转到textEndEditing委托方法,并且从是否输入nil / worng值开始,我再次调用[alert show]。

- (void)textFieldDidEndEditing:(UITextField *)textField
{
if ([textField.text length] > 0)
{

}
else
{
 NSLog(@"Checking");
 [loginAlert show];
}
}



但是它不再显示。请告诉我该怎么办?

最佳答案

首先将警报视图委托更改为self。

loginAlert = [[UIAlertView alloc] initWithTitle:@"Check"
                                        message:@"Ok"
                                       delegate:self
                              cancelButtonTitle:@"Ok"
                              otherButtonTitles:nil, nil];
[loginAlert setAlertViewStyle:UIAlertViewStyleSecureTextInput];

[loginAlert show];


然后在警报视图委托方法中检查文本的长度,如果为空,则再次显示警报。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        if ([[loginAlert textFieldAtIndex:0].text length] > 0)
        {

        }
        else
        {
            NSLog(@"Checking");
            [loginAlert show];
        }
    }
}

关于iphone - 如何使UIAlertView再次调用自身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16583396/

10-11 20:56