原因: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; } } }