因此,我想向用户显示一个警报视图,供他们输入密码。我想检查以确保键盘上输入了某些内容。我知道在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
}
}
}
如果他们没有输入任何内容,我会在他们点击确定后立即再次询问密码。有更好的解决方案吗?谢谢!
答案 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
/引用,这将有助于您随时检索其值。