iPhone Disabling UIActionSheet buttons

后端 未结 7 904
梦谈多话
梦谈多话 2020-12-10 16:01

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?

7条回答
  •  长情又很酷
    2020-12-10 16:19

    I 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.

提交回复
热议问题