保持显示UIAlertView

我有一个带有textField的UIAlertView和两个button:保存并取消。 当点击保存button时,我正在检查文本字段是否为空,如果是,我只是想将textFields占位符更改为:“请input一个名称”并将警报视图保留在屏幕上。 但是它会被自动解雇。

我如何覆盖呢?

将目标添加到子类警报视图中的文本字段。 您可以inheritancealertView,而不是按照这篇文章中的描述closures

[[alertView textFieldAtIndex:0] addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged]; 

然后编写一个名为textFieldDidChange的函数来检查alertView的当前文本字段,并设置一个布尔值,以便知道是否closures该警报。

 - (void) textFieldDidChange { NSString *alertViewText = [[alertView textFieldAtIndex:0] text]; if ([alertViewText isEqualToString:@""]) { [alertView setMessage:@"Enter a name please."]; } else { [alertView setMessage:@"Default Message"]; } } 

*另外,我build议禁用“保存”,当它是空的,而不必子类。 *

 - (void) textFieldDidChange { NSString *alertViewText = [[alertView textFieldAtIndex:0] text]; if ([alertViewText isEqualToString:@""]) { [alertView setMessage:@"Enter a name please."]; for (UIViewController *view in alertView.subview) { if ([view isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)view; if ([[[button titleLabel] text] isEqualToString:@"Save"]) [button setEnabled:NO]; } } } else { [alertView setMessage:@"Default Message"]; for (UIViewController *view in alertView.subview) { if ([view isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)view; if ([[[button titleLabel] text] isEqualToString:@"Save"]) [button setEnabled:YES]; } } } }