UIAlertView,为UIAlertViewStyleSecureTextInput提供模态

时间:2012-08-30 16:25:19

标签: iphone uialertview

因此,我想向用户显示一个警报视图,供他们输入密码。我想检查以确保键盘上输入了某些内容。我知道在UIAlertViewDelegate中,您可以获得文本输入。但是,到目前为止我唯一的解决方案是,

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"buttonIndex: %i", buttonIndex);

    if (buttonIndex == 0) {
        UITextField *passwordTextField = [alertView textFieldAtIndex:0];
        if (!passwordTextField.text.length == 0) {
            NSLog(@"password: %@", passwordTextField.text);
            // save the password
        }
        else {
            // Show the alert view again asking for the password
        }

    }

}

如果他们没有输入任何内容,我会在他们点击确定后立即再次询问密码。有更好的解决方案吗?谢谢!

2 个答案:

答案 0 :(得分:0)

再次显示提醒视图。您可以将警报视图放在方法中并调用它。

...

} else {

    [self showPassAlert];

}

您还可以查看编辑文本字段的时间,并在警报视图中启用/禁用该按钮。如果文本字段的长度为0,则禁用该按钮。编辑文本字段并且其长度大于0时,启用该按钮。这比关闭和重新打开视图更优雅。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextFieldTextDidChangeNotification object:textField];

...

-(void)textDidChange {

    for (UIView *view in alertView.subviews) {

        if ([view isKindOfClass:[UIButton class]]) {

            if (textField.text.length == 0) {

                //you may need to look for the button's title to make sure you are not disabling the cancel button

                ((UIButton *) view).enabled = NO;

            } else {

                ((UIButton *) view).enabled = YES;

            }

        }

    }

}

答案 1 :(得分:0)

为什么不为您的UITextField创建iboutlet /引用,这将有助于您随时检索其值。