Немного улучшенная версия Реувена [увы, я не могу добавить комментарий к его 'потому что у меня пока нет' репутации '...].
@interface UIActionSheet (ButtonEnabled)
- (void)setButtonAtIndex:(NSUInteger)index Enabled:(BOOL)enabled;
@end
@implementation UIActionSheet (ButtonEnabled)
- (void)setButtonAtIndex:(NSUInteger)index Enabled:(BOOL)enabled
{
for (UIView* view in self.subviews) {
if ([view isKindOfClass:[UIButton class]]) {
if (index-- == 0) {
[(UIButton*)view setEnabled:enabled];
break;
}
}
}
}
@end
Предыдущий responsedsToSelector: проверка была посторонней, потому что мы уже проверяем UIButton (который является подклассом UIControl, все поддерживают setEnabled]. В соответствии с NSArrays от Apple, я также изменил на AtIndex и NSUInteger, но это в основном косметические.
Общий подход, кажется, работает нормально, но, пожалуйста, обратите внимание, что он предполагает, что порядок подпредставлений кнопок точно соответствует порядку индексов кнопок при создании листа действий, что строго не документировано в любом месте AFAIK.