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 处于纵向。

在此处输入图像描述

4

2 回答 2

2

我解决了这个问题。

我正在使用

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

代替

UIDeviceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

由于某种原因,iPad 没有得到正确的方向。

谢谢你的帮助。

于 2012-06-01T18:22:15.857 回答
0

我可能会误解您的问题,但我建议您在模式视图被关闭后尝试在主视图中调用“setNeedsLayout”。这应该会触发视图布局的自动调整大小,如果它没有自动调整大小,则可能会解决问题。

查看此链接以获取更多信息:

http://developer.apple.com/library/ios/ipad/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/setNeedsLayout

于 2012-05-31T21:18:07.700 回答