I want to disable buttons in the UIAction sheet and enable them after a certain condition is true. How do I achieve this? Any ideas?
See Question&Answers more detail:osI want to disable buttons in the UIAction sheet and enable them after a certain condition is true. How do I achieve this? Any ideas?
See Question&Answers more detail:osI found that craig's answer didn't work for me (on OS 3.1). After a little digging around I discovered that the subviews of UIActionSheet
are actually of an undocumented class UIThreePartButton
Anyway, this works for me (implemented as part of the UIActionSheetDelegete
method)
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet // before animation and showing view
{
for (UIView* view in [actionSheet subviews])
{
if ([[[view class] description] isEqualToString:@"UIThreePartButton"])
{
if ([view respondsToSelector:@selector(title)])
{
NSString* title = [view performSelector:@selector(title)];
if ([title isEqualToString:@"Button 1"] && [view respondsToSelector:@selector(setEnabled:)])
{
[view performSelector:@selector(setEnabled:) withObject:NO];
}
}
}
}
}
Hope that helps someone else, although I'd echo Ed Marty's question of whether you'd be better off just omitting these buttons from the action sheet altogether instead of doing this. As always when using undocumented features, there is a risk of app store rejection, although this code is written to fail gracefully if Apple do chnage the APIs again in a future OS release.