点击 UIBarButtonItem 后它将一直处于高亮状态。

5
- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"这是个bug?->";
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:68/255.0 green:155/255.0 blue:235/255.0 alpha:1.0];
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};

    UIBarButtonItem *rightItem0 = [[UIBarButtonItem alloc] initWithTitle:@"我会变灰" style:UIBarButtonItemStylePlain target:self action:@selector(recordButtonClick)];
    [rightItem0 setTintColor:[UIColor whiteColor]];

    self.navigationItem.rightBarButtonItems = @[rightItem0];
}

- (void)recordButtonClick{
    [self.navigationController pushViewController:[NextViewController new] animated:YES];
}

右上角的UIBarButtonItem始终高亮:

image

为什么右上角的UIBarButtonItem“我会变灰”始终高亮? 这是iOS 11.2中的一个bug吗?

1个回答

14

这是iOS 11.2的一个bug吗?

是的。在根视图控制器中存在一个iOS 11的bug,影响右侧的导航栏按钮。当你跳转到下一个视图控制器并返回时,右侧的导航栏按钮会变得暗淡。

这就是你屏幕录制中看到的Bug。在你的代码中,你将右侧导航栏按钮的色调设置为白色,并且初始状态下它确实是白色的。但是当你进行跳转和返回操作之后,它不再是白色了。

我会在视图控制器的viewWillAppear方法中解决这个问题,具体如下:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.tintAdjustmentMode = .normal
    self.navigationController?.navigationBar.tintAdjustmentMode = .automatic
}

仍未在11.2.1下修复 :( 我设置了一个小的解决方法.. 如果(button.isEnabled == true) {button.isEnabled = false; button.isEnabled = true} 这确实解决了它。 - Pascale Beaulac
@MaudeBeaulac添加了代码,展示了我目前的解决方法。 - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接