iPad - 全屏模态视图控制器在iPad上解除后,屏幕的某个部分不再接收触摸事件。

3
我在我的iPad的全屏主视图顶部有一个工具栏。 工具栏有一个barButtonItem,当按下时,显示一个弹出窗口。
在弹出窗口中,我有一个UIButton,当按下时,告诉委托(主视图控制器)关闭弹出窗口并显示一个全页模态视图。
这一切工作得很好。
当我关闭模态视图时,弹出窗口所占据的屏幕区域 - 包括主视图和工具栏按钮 - 不再响应触摸事件。
如果我旋转设备,则可以解决此问题,且仅在横向模式下发生。
有什么建议吗?
更新:此错误仅在实际iPad上运行时发生,而不会在模拟器上运行时发生。
我有一个委托方法来关闭全屏模态视图...
- (void)fullScreenViewControllerDidFinish:(FullScreenWebViewController *)fullScreenWebView {
    [self dismissViewControllerAnimated:YES completion:^{
        [self setFullScreenWVC:nil];
        [[self view] setNeedsLayout]; //Does't fix the issue
    }];
}

更新: 使用Instruments,我已经让iPad向我展示它是如何布置子视图的。看起来当模态视图被解散时,它认为iPad处于竖屏状态,但设备显然是横屏的。 enter image description here
2个回答

2

我解决了问题。

我正在使用

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

替代

UIDeviceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
有些原因造成iPad无法正确获取方向。 谢谢您的帮助。

0

Kevin,这并没有解决问题。我将在问题中更新我的全屏VC取消委托回调。 - W Dyson
请尝试调用 "setNeedsDisplay" 来重新绘制整个边界矩形,而不是我之前建议的 "setNeedsLayout"。 - Kevin Horgan
那也不起作用。我应该在主视图上调用它们,对吧? - W Dyson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接