禁用警报视图按钮

时间:2010-06-03 12:42:49

标签: iphone

我有一个关于twitter发布的警报视图。 警报视图有2个按钮和一个文本字段 发送和取消

我想禁用发送按钮,直到用户填写消息框(即文本字段)。 比如,空场验证。

如何禁用发送按钮?

2 个答案:

答案 0 :(得分:1)

目前的SDK无法做到这一点。您必须创建自定义视图才能获取用户的输入。您正在向UIAlertView添加文本字段的事实本身是不受支持的,并且无论如何都可能在任何未来的SDK中中断。

我建议您创建一个自定义视图,如果您仍希望它看起来像UIAlertView,您可以使用适当的图像和自定义按钮来执行此操作。

答案 1 :(得分:1)

我有类似的要求,并且能够在不诉诸Apple明确禁止的任何内容的情况下(即使用私有类或API)。在下面的示例中,我找到并禁用“恢复”按钮。

注意#1 - “[提示显示]”的位置很重要。它(显然)列出了视图,因此必须在尝试查看视图层次结构之前完成。

注意#2 - “contains:”方法是我定义的一个NSString不区分大小写的子字符串搜索方法。可能在您的代码中使用rangeOfString。

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Application Warning"
                                                message:@"What should I do with the file?"
                                               delegate:self
                                      cancelButtonTitle:@"Ignore"
                                      otherButtonTitles:@"Remove", @"Recover", nil];

[alert show];

// try to find and disable "Recover" button
for(UIView *aView in alert.subviews) 
{
    if ([[[aView class] description] contains:@"Button"])
    {                
        UIButton *aButton = (UIButton *)aView;
        if ([aButton.titleLabel.text contains:@"Recover"]) 
        {
            aButton.enabled = NO;
        }                
    }
}