可能重复:
ViewController not responding to didRotateFromInterfaceOrientation
我遇到了在我的一个viewcontroller子类中没有触发的didRotateFromInterfaceOrientation方法的问题。
我有一个带有UISplitViewController的iPad应用程序作为主视图。在细节方面,我使用“隐藏”(无工具栏,导航栏)导航控制器进行延迟视图切换。我想要捕获didRotateFromInterfaceOrientation的ViewController是navcontroller层次结构中的两个级别。 (这些都不应该有所作为,但我会包含这些信息,以防有一些我不知道的特殊情况)
我有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
// This doesn't work. :(
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"Rotate Go!");
}
视图旋转正常,但didRotateFromInterfaceOrientation永远不会触发。
知道我缺少什么吗?
答案 0 :(得分:5)
如果你的UIViewController是某个根视图中的子节点,那么IB默认情况下不会将它作为子控制器添加到根控制器。解决此问题的最简单方法是修改根控制器:
- (void)viewDidLoad
{
[super viewDidLoad];
[self addChildViewController:(UIViewController*) self.yourChildController];
}
这应该可以解决问题。现在您的子控制器将同时接收:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
和
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
消息。
答案 1 :(得分:0)
好吧,我从未弄清楚为什么事件没有解雇,但我确实找到了解决方法:
在两个UISplitViewController
委托方法splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
和splitViewController:willShowViewController:invalidatingBarButtonItem:
中,我正在检测我的视图是否可见,然后在此处执行我的轮换逻辑。