iOS11适配UIToolbar无法点击问题

原因:Toolbar 在iOS11默认添加有_UIToolbarContentView,_UIToolbarContentView

_UIButtonBarStackView覆盖在自定义的按钮上面,导致按钮无响应。

解决方案:

1.为了解决iOS11(与较低版本兼容)的问题,您只需要在UIToolBar被添加为UI层次结构的子视图之后,

调用 layoutIfNeeded方法,UIToolbarContentView会降低到UIToolBar的第一个子视图,然后你就可以将所有的子视图添加到最顶层。

UIToolbar *toolbar = [UIToolbar new];

[self addSubview: toolbar];

[toolbar layoutIfNeeded];

2.在UIToolbar子类中加入这样一段代码

- (void)layoutSubviews {
    [super layoutSubviews];


    NSArray *subViewArray = [self subviews];

    for (id view in subViewArray) {
        if ([view isKindOfClass:(NSClassFromString(@"_UIToolbarContentView"))]) {
            UIView *testView = view;
            testView.userInteractionEnabled = NO;
         }
     }

}

 

posted on 2018-02-26 09:43  麦芽呀~  阅读(647)  评论(0编辑  收藏  举报