UIActivityViewController原生分享模塊遮擋了視圖的解決辦法域仇。
如圖,視圖加載到KeyWindow,UIActivityViewController類卻在夾到中間了。
image.png
方法一:很明顯將遮擋的視圖加到當前控制器桶至,這樣子UIActivityViewController就不會被遮擋了离唬,讓我們先試一下。
image.png
這時候發(fā)覺褪迟,UIActivityViewController是不會被遮擋了,但tabBar區(qū)域會遮擋彈框出來的部分圖層答憔,即使你將tabBar隱藏了味赃,接著修改當前所有控制器的涂層高度,讓它等同于屏幕寬~~然而虐拓,這真的是太麻煩了心俗。
隨手一試,報錯:<UIActivityViewController: 0x7f8222239a00> should have parent view controller蓉驹〕情唬看來系統(tǒng)方法真的不能按著自己的想法來了。
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
//[window.rootViewController presentViewController:activityVC animated:YES completion:nil];
[window.rootViewController addChildViewController:activityVC];
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
UIView *activityView = activityVC.view;
[keyWindow addSubview:activityView];
weGood[11959:157654] *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UIActivityViewController: 0x7f8222239a00> should have parent view controller:(null) but actual parent is:<XDTabBarController: 0x7f8220d125d0>'
*** First throw call stack:
最終解決辦法
if(shareImgs.count>1){//調(diào)用原生分享
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:shareImgs applicationActivities:nil];
//去除一些不需要的圖標選項
activityVC.excludedActivityTypes = @[UIActivityTypeAirDrop, UIActivityTypePostToWeibo, UIActivityTypePostToTencentWeibo];
//成功失敗的回調(diào)block
__weak __typeof(self)weakSelf = self;
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
[weakSelf.vc.view addSubview:weakSelf];
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
[keyWindow addSubview:weakSelf];
if (completed){
[MBProgressHUD showSuccess:@"謝謝分享态兴!"];
}else{
NSLog(@"************Share fail with error %@*********",activityError);
}
};
activityVC.completionWithItemsHandler = myBlock;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
[window.rootViewController presentViewController:activityVC animated:YES completion:nil];
[self removeFromSuperview];
[self.vc.view addSubview:self];
}
image.png
最終圖層
image.png
--end.