原因:Toolbar 在iOS11默认添加有_UIToolbarContentView,_UIToolbarContentView、_UIButtonBarStackView覆盖在自定义的按钮上面,导致按钮无响应。
解决方法:
一、改写layoutSubviews的UIToobar的子类,将UIToolbarContentView的userInteractionEnable设置为NO。
-(void)layoutSubviews{
[superlayoutSubviews];
NSArray*subViewArray=[selfsubviews];
for(id viewinsubViewArray){
if([view isKindOfClass:(NSClassFromString(@"_UIToolbarContentView"))]){
UIView*testView=view;testView.userInteractionEnabled=NO;
}
}
}
二、需要在UIToolBar被添加为UI层次结构的子视图之后,调用 layoutIfNeeded方法,将UIToolbarContentView降低到UIToolBar的第一个子视图,然后你就可以将所有的子视图添加到最顶层。
UIToolbar *toolbar = [UIToolbar new];
[self addSubview: toolbar];
[toolbar layoutIfNeeded];
网友评论