zoukankan      html  css  js  c++  java
  • viewController 不响应横竖屏转换相关消息的问题

    viewController 不响应横竖屏转换相关消息的问题

    罗朝辉(http://blog.csdn.net/kesalin)

    转载请注明出处


    有同学在 CocoaChina 上提出这样一个问题:A viewController 中包含一个 B viewController(B 的 view 作为 A 的 view 的 subView),在横竖屏转换时,A 可以得到屏幕旋转相关的消息(如:shouldAutorotateToInterfaceOrientation),而 B 却得不到,即使 A,B 都实现了这些函数。原贴见这里:http://www.cocoachina.com/bbs/read.php?tid=40973&page=1#393765

    这个问题我以前也碰到过,稍微研究了一下,其原因是 A 是在 AppDelegate 里 window 的 controller 层次体系中(比如,是 navigation push进去的等等),而 B 只是创建出来,让 A 方便使用其 view 而已,B 并没有加入这个层次体系中( B 的 parentViewController 为 nil,哪怕 B.view.superview 是 A.view)。所以 A 会跟着那个层次体系得到系统旋转相关的消息,而 B 被凉在一边,得不到相关消息。

    解决办法有三个方案:

    第一,是将 B 加入 controller 继承层次中去;

    第二,是在 A 中实现所有旋转相关的消息,并在 A 相应实现的消息中,显式调用 B 对应的相关消息;

    第三,是在 A 的 layoutSubviews 中显式调用 B 的 layoutSubviews 函数,在 B 的 layoutSubviews 消息实现里,根据 statusBar 的 orientation 来调整其布局。这种方法只是调整 B 的布局而已,不会真的改变 B 的 orientation 属性值。

  • 相关阅读:
    找回感觉的练习
    第四次博客作业-结对项目
    zookeeper启动脚本
    docker自己制作centos7-jdk1.8-tomcat8
    Docker运行springboot的项目
    从list中模糊查询字符串
    Java实现文件下载
    hadoop的HA集群搭建
    oauth2 feign 报401的错误
    SpringBoot mybatis 自定义分页插件 注解版
  • 原文地址:https://www.cnblogs.com/chenfulai/p/2235884.html
Copyright © 2011-2022 走看看