在uialertview中启用按钮的属性

时间:2010-12-20 01:37:23

标签: iphone objective-c

我使用两个按钮和一个文本字段创建一个uialertview,如果textfield为空,我想要禁用“Ok”按钮。如何获取uibutton对象,更改是启用状态。

2 个答案:

答案 0 :(得分:11)

您可以使用从UIControl继承的enabled属性:

for(UIView *view in alertView.subviews) {
    if([view isKindOfClass:[UIButton class]]) {
      ((UIButton *) view).enabled = NO;
    }
}

为了可重用性,当NSArray上有一个检索给定类对象的类别时,这变得更加简单:

@implementation NSArray (JRAdditions)

- (NSArray *)objectsOfClass:(Class)cls {
   NSParameterAssert(cls);
   NSMutableArray *array = [@[] mutableCopy];
   for(id obj in self) if([obj isKindOfClass:cls]) [array addObject:obj];
   return [array copy];
}

@end

您的代码现在看起来像这样:

[[alertView.subviews objectsOfClass:[UIButton class]] enumerateObjectsUsingBlock:^(UIButton *obj, NSUInteger index, BOOL *stop) {
    obj.enabled = NO;
}];

答案 1 :(得分:0)

从iOS 5开始,您可以在UIAlertViewDelegate实例中执行此操作。

-(BOOL) alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
   return [[alertView textFieldAtIndex:0].text length] > 0;
}