UIBarButtonItem已禁用,但颜色正常

Ban*_*ana 15 objective-c uibarbuttonitem ios

我有一个问题UIBarButtonItem.我使用外观代理为状态设置其颜色Normal,Disabled并且我在viewDidLoad方法中执行此操作UIViewController.但是,Normal即使禁用该按钮,该按钮也会获得颜色(并且由于IBAction未调用该方法,因此它肯定被禁用).

问题类似于这一个禁用的uibarbuttonitem的文本颜色总是正常状态的颜色,但是,这里发布的解决方案对我不起作用.

我的应用程序适用于iOS 8.2,我使用的是Xcode 6.2

有任何想法吗?

编辑:我不确定这是否有助于找到解决方案,但当我使用initWithImage:而不是initWithTitle:一切创建我的按钮似乎运作良好.这可能是一个苹果虫吗?

Swi*_*ter 29

斯威夫特4

如果有人在寻找如何改变barbuttonitem禁用状态的迅速.干得好.

barButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.lightGray], for: .disabled)
Run Code Online (Sandbox Code Playgroud)

  • UIColor.init(white:0.8,alpha:1.0)更类似于默认的禁用颜色。谢谢。 (2认同)

Abh*_*rma 6

请检查以下内容code.

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem * btnTemp = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnDone_Click:)];
    [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateNormal];

    [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName:[UIFont systemFontOfSize:16.0f]} forState:UIControlStateDisabled];

    [self.navigationItem setRightBarButtonItem:btnTemp];

}

- (void)btnDone_Click : (id)sender {

    UIBarButtonItem * button = (UIBarButtonItem *)sender;
    [button setEnabled:FALSE];
    [self performSelector:@selector(enableButton:) withObject:sender afterDelay:2.0f];


}

- (void)enableButton : (id)sender {
    UIBarButtonItem * button = (UIBarButtonItem *)sender;
    [button setEnabled:TRUE];
}
Run Code Online (Sandbox Code Playgroud)


Ban*_*ana 5

所以我终于设法让它正常工作,问题是我设置了两次UIBarButtonItems的颜色,一次使用[navBar setTintColor:]并使用外观代理.只留下外观代理解决了问题.