旋转modalView时,iPad的UISplitViewController旋转效果不佳

时间:2011-08-27 04:47:31

标签: ipad rotation uisplitviewcontroller

我在UISplitViewController上有轮换问题。在我的例子中,在splitViewController上调用当前模态(此splitViewController是窗口的根视图)后显示另一个视图。旋转该modalView时,splitView旋转不正确。

splitView看起来像是旋转了,但DetailViewController仍然像在肖像上一样,而RootViewController根本没有显示。它仍然像肖像模式。看来splitView是旋转的,而不是基础视图(DetailViewControllerRootViewController)。

我尝试在modalView上实现willRotateToInterfaceOrientation,并使用委托调用splitView的willRotateToInterfaceOrientation方法。

这是我在modalView中实现的:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    MacProjectAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    [delegate.splitViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

结果是,DetailViewController行为正确,但不是RootViewController。它隐藏起来。在用户手动旋转到纵向并返回横向后,它将重新出现。但显然用户并不想这样。

这是我在呈现modalView时所做的:

ModalViewController *modalView = [[ModalViewController alloc] init];
MacProjectAppDelegate *delegate = (MacProjectAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.splitViewController presentModalViewController:modalView animated:YES];
[modalView release];

在这种情况下,有没有办法显示RootViewController?或者我的做法是错的?

编辑: 似乎所有视图都没有按照modalView旋转。 RootViewController和DetailViewController都没有旋转(两个ViewController都没有调用the didRotateFromOrientation)。所以现在我假设它没有按照device / modalView旋转。

1 个答案:

答案 0 :(得分:1)

行。我的问题已经解决了。 我所做的就是我对舒拉科夫的评论所写的评论。

我获得appDelegate并获取splitViewController以调用willRotateToInterfaceOrientation。

MacProjectAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.splitViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

我做了两次,因为其中只有一个似乎不起作用(我不知道为什么)。一个采用modalViewController的{​​{1}}方法,一个采用willRotateToInterfaceOrientation的{​​{1}}方法。

要删除RootViewController上的导航器/弹出窗口按钮,我只需通过willAppear的{​​{1}}方法调用DetailViewController即可使该按钮无效。这就是这个特定方法的样子(对于invalidateRootPopoverButtonItem的第一个,我只是将RootViewController命令传递给willAppear):

modalViewController

希望这可以解释我如何克服我的问题并帮助那些遇到与我相同问题的人。