UIPopoverPresentationController不能覆盖导航栏点击事件
当我们在用UIPopoverPresentationController做一些突出的展示效果时,很有可能是通过导航栏上的按钮进行展示,然鹅,这会带来一个问题:
UIPopoverPresentationController不会覆盖到导航栏上.也就是说,这UIPopoverPresentationController显示的时候,点击导航栏item,popover并不会消失,导致在其他页面还会出现.
我们也知道,这是passthroughViews的问题,在iOS7之前,要在presentViewController方法之后调用
popVC.passthroughViews = nil;
可以解决这个问题.可是iOS8之后,这个方法没有效果了.百思不得其解,Google了一下,参考了 这篇文章,才知道要在presentViewController方法完成的block里面处理才行,方法如下
MFSelectTableViewController * select = [MFSelectTableViewController new];
select.dataArray = self.selectDataArray;
select.preferredContentSize = CGSizeMake(100, 100);
select.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController * popVC = select.popoverPresentationController;
popVC.barButtonItem = self.moreItem;
popVC.delegate = self;
popVC.backgroundColor = kColorWhiteColor;
popVC.sourceRect = CGRectMake(0, 0, 100, 100);
popVC.permittedArrowDirections = UIPopoverArrowDirectionUp;
[self presentViewController:select animated:YES completion:^{
popVC.passthroughViews = nil;
}];