addSubview导致的旋屏问题:shouldAutorotateToInterfaceOrientation方法不调用

概述在我的app中,有一个登录页面ViewController,我在其中实现了shouldAutorotateToInterfaceOrientation方法,让它支持自动旋屏: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {     return interfa

在我的app中,有一个登录页面VIEwController,我在其中实现了shouldautorotatetoInterfaceOrIEntation方法,让它支持自动旋屏:

- (BOol)shouldautorotatetoInterfaceOrIEntation:(UIInterfaceOrIEntation)interfaceOrIEntation

{

    return interfaceOrIEntation == UIInterfaceOrIEntationPortrait ||

    interfaceOrIEntation == UIInterfaceOrIEntationPortraitUpsIDeDown;

}

这个方法工作得很好,当屏幕从正向模式旋转到倒置人像模式时,VIEw Controller如预期旋转。

当登录完成,我用以下代码显示另一个VIEw Controller:

iPadMainVC *mainVC=[[iPadMainVC alloc]initWithNibname:@"iPadMainVC"

                                                          bundle:nil];

            UINavigationController *nController = [[UINavigationController alloc]initWithRootVIEwController:mainVC];

           

           [nController setNavigationbarHIDden:YES animated:NO];

           

            self.vIEw.window.rootVIEwController = nController;

在这个VIEw Controller(iPadMainVC)中,我把前面的shouldautorotatetoInterfaceOrIEntation方法代码复制粘贴进去了。

然而,当iPad旋转时,除了视图第1次load时以外,shouldautorotatetoInterfaceOrIEntation方法不会被调用

我添加了一些打印语句在该方法中进行deBUG:

if (interfaceOrIEntation== UIDeviceOrIEntationPortrait) NSLog(@"Up");

    if(interfaceOrIEntation == UIDeviceOrIEntationPortraitUpsIDeDown) NSLog(@"Down");

程序运行时,在登录完成,刚刚进入iPadMainVC视图的时候,shouldautorotate方法会调用3次:

 [11567:207] Up

  [11567:207] Up

  [11567:207]Up

此后无论你怎样旋转屏幕,shouldautorotate方法都不会调用了。

我查到有的资料说,“shouldautorotatetoInterfaceOrIEntation doesn't work well if you are using [someVIEwaddSubvIEw]”(使用addSubvIEw方式添加的VIEwController,shouldautorotate方法不能正常工作)。

如果是这样,那么我原来的VIEw Controller(登录页面)就是用addSubvIEw添加的:

⋯⋯

[window addSubvIEw:rootController.vIEw];

[window makeKeyAndVisible];

⋯⋯

我需要把它修改为:

⋯⋯

window.rootVIEwController=rootController;

⋯⋯

这样,shouldautorotate方法才能很好地工作。

结论

这样,如果要在程序中很好地支持旋屏,尽量不要使用addSubvIEw方式切换视图。我们可以用popoverVIEwController或presentModalVIEwController替代。

总结

以上是内存溢出为你收集整理的addSubview导致的旋屏问题:shouldAutorotateToInterfaceOrientation方法不调用全部内容,希望文章能够帮你解决addSubview导致的旋屏问题:shouldAutorotateToInterfaceOrientation方法不调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存