【发布时间】:2010-06-03 12:42:48
【问题描述】:
我有 Twitter 发布的警报视图。 警报视图有 2 个按钮和一个文本字段 发送和取消
我想禁用发送按钮,直到用户填写消息框(即文本字段)。 比如,空字段类型的验证。
如何禁用发送按钮?
【问题讨论】:
标签: iphone
我有 Twitter 发布的警报视图。 警报视图有 2 个按钮和一个文本字段 发送和取消
我想禁用发送按钮,直到用户填写消息框(即文本字段)。 比如,空字段类型的验证。
如何禁用发送按钮?
【问题讨论】:
标签: iphone
我有类似的要求,并且能够做到这一点而无需诉诸 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;
}
}
}
【讨论】:
当前的 SDK 无法做到这一点。您必须创建一个自定义视图来获取用户的输入。您向 UIAlertView 添加文本字段的事实本身不受支持,并且可能会在未来的任何 SDK 中中断。
我建议您创建一个自定义视图,如果您仍然希望它看起来像 UIAlertView,您可以使用适当的图像和自定义按钮来做到这一点。
【讨论】: