作为验证的一种形式,是否有任何方法可以防止按下“确定”按钮时警报视图被解除?防止UIAlertView退出
场景:我在alertview中有2个用户名/密码的文本字段。如果两者都是空的并且用户按下“确定”,我不希望警报被解除。
作为验证的一种形式,是否有任何方法可以防止按下“确定”按钮时警报视图被解除?防止UIAlertView退出
场景:我在alertview中有2个用户名/密码的文本字段。如果两者都是空的并且用户按下“确定”,我不希望警报被解除。
我不相信你实际上需要传递任何按钮名称。只要拿出你的确定按钮字符串,并将其保留为“无”。
你这样做是错误的,你应该根据输入启用和禁用提交按钮。首先你必须进入按钮。这很容易,只需创建无按键的警报,创建一个独立的按钮,并把它添加到对话框:
[alert addButtonWithTitle:@"OK"];
UIButton *submitButton = [[alert subviews] lastObject];
[submitButton setEnabled:…];
然后你必须设置一个委托的文本框,并启用或禁用时域更改按钮:
- (BOOL) textField: (UITextField*) textField
shouldChangeCharactersInRange: (NSRange) range
replacementString: (NSString*) string
{
int textLength = [textField.text length];
int replacementLength = [string length];
BOOL hasCharacters = (replacementLength > 0) || (textLength > 1);
[self setButtonsAreEnabled:hasCharacters];
}
// Disable the ‘Return’ key on keyboard.
- (BOOL) textFieldShouldReturn: (UITextField*) textField
{
return NO;
}
当然,你应该将所有这些包装到一个单独的类中,这样你就不会搞砸你的调用代码。
iOS 5引入了一个新属性UIAlertView
来处理这个问题。
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
Apple documentation on UIAlertView.
添加新UIAlertViewDelegate
方法来处理该按钮的启用/禁用。
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
像iTunes的密码控件? Apple会使用UIAlertView吗? – 2009-12-22 17:29:09