【问题标题】:disable Alert view button禁用警报视图按钮
【发布时间】:2010-06-03 12:42:48
【问题描述】:

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

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

如何禁用发送按钮?

【问题讨论】:

    标签: iphone


    【解决方案1】:

    我有类似的要求,并且能够做到这一点而无需诉诸 Apple 明确禁止的任何事情(即使用私有类或 API)。在下面的示例中,我找到并禁用了“恢复”按钮。

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

    注意 #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;
            }                
        }
    }      
    

    【讨论】:

    • 在哪个版本的 iOS 上被破解了?我已经在 iOS 5 和 6 上对此进行了测试,并且两者都适用。如果您使用的是 iOS 7 测试版,它可能无法正常工作,因为那里的警报现在很混乱。
    • iOS7 的更新——除了简单的弹出窗口之外,我已经放弃在 iOS 7 中使用 UIAlertView。相反,我已经开始使用第 3 方相似 (CODialog),它允许我调整“警报”到我心中的内容,而不会违反任何 Apple 限制。
    【解决方案2】:

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

    我建议您创建一个自定义视图,如果您仍然希望它看起来像 UIAlertView,您可以使用适当的图像和自定义按钮来做到这一点。

    【讨论】:

    • dats 是个好主意...我已经做过类似 dat 的东西,所以它不会很方便。谢谢迈克问候
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2015-07-06
    • 2019-07-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多