Gau*_*rav 9 iphone objective-c ipad ipad-3 ios7
当UIDocumentInteractionController被解除时,将移除呈现视图控制器的视图,包括来自UINavigationController的元素.
UIDocumentInteractionController解除并移除呈现视图控制器的视图,留下一个纯白色/灰色框,其中呈现视图控制器以前存在.在此之后,应用程序不再响应任何触摸事件.
这在运行iOS 7 for Quick Look Pdf Reader的iPad模拟器(iOS 7.0)和iPad 3(Wifi)上发生.
无论应用程序是针对iOS 6.1还是iOS 7 SDK编译的,都无关紧要
请让我知道你的建议.
小智 4
当我在 iOS 7 的 iPad 上以模态表单形式呈现视图控制器中的 UIDocumentInteractionController 时,我也遇到了同样的问题(在 iOS 6 中工作正常)。
看起来,在从文档交互控制器转换回呈现视图控制器的过程中,呈现视图控制器的视图被包装在临时的 UITransitionView 中,然后在转换完成后,该转换视图将从视图层次结构中删除,与呈现视图控制器的视图一起,只留下 UIDropShadowView,它是模式表单的背景视图可见(灰色框)。
我通过在文档交互控制器预览开始时保留对呈现视图控制器的根视图(层次结构中的投影视图之前的根视图)的引用来解决这个问题,并在文档交互控制器预览时将该视图恢复到层次结构预览已结束。
这是示例代码:
- (void)documentInteractionControllerWillBeginPreview:(__unused UIDocumentInteractionController *)controller {
if (UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM()) {
// work around iOS 7 bug on ipad
self.parentView = [[[self.view superview] superview] superview];
self.containerView = [self.parentView superview];
if (![[self.containerView superview] isKindOfClass: [UIWindow class]]) {
// our assumption about the view hierarchy is broken, abort
self.containerView = nil;
self.parentView = nil;
}
}
}
- (void)documentInteractionControllerDidEndPreview:(__unused UIDocumentInteractionController *)controller {
if (UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM()) {
if (!self.view.window && self.containerView) {
assert(self.parentView);
CGRect frame = self.parentView.frame;
frame.origin = CGPointZero;
self.parentView.frame = frame;
[self.containerView addSubview: self.parentView];
self.containerView = nil;
self.parentView = nil;
}
}
}
Run Code Online (Sandbox Code Playgroud)