2009-12-22 85 views
10

作为验证的一种形式,是否有任何方法可以防止按下“确定”按钮时警报视图被解除?防止UIAlertView退出

场景:我在alertview中有2个用户名/密码的文本字段。如果两者都是空的并且用户按下“确定”,我不希望警报被解除。

+0

像iTunes的密码控件? Apple会使用UIAlertView吗? – 2009-12-22 17:29:09

回答

0

我不相信你实际上需要传递任何按钮名称。只要拿出你的确定按钮字符串,并将其保留为“无”。

9

你这样做是错误的,你应该根据输入启用和禁用提交按钮。首先你必须进入按钮。这很容易,只需创建无按键的警报,创建一个独立的按钮,并把它添加到对话框:

[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; 
} 

当然,你应该将所有这些包装到一个单独的类中,这样你就不会搞砸你的调用代码。