我最近在将一些代码从iPhone应用程序移植到iPad时遇到了问题.它可能与此处描述的问题有关,但我发现该问题的解释/解决方案并不令人满意.场景是这样的:
视图控制器'A'(根视图控制器)使用"表单"模式演示样式呈现模态视图控制器(称为'B').
视图控制器B呈现具有"全屏"模态呈现样式的视图控制器"C".
当视图控制器C是最顶部呈现的视图控制器时,iPad旋转.
取消C后,B将重新显示,但方向不正确.
据我所知,链接多个呈现的视图控制器应该没有问题 - 实际上,在其他视图控制器文档中呈现视图控制器中明确支持此行为.我还在iOS 5发行说明中阅读了以下声明:
iOS 5中的旋转回调不适用于通过全屏显示的视图控制器.这意味着,如果你的代码呈现了另一个视图控制器视图控制器,然后用户随后旋转设备,以不同的取向,在解雇,底层控制器(即呈现控制器)将不会收到任何旋转回调.但请注意,呈现控制器在重新显示时将接收viewWillLayoutSubviews调用,并且可以从此方法查询interfaceOrientation属性并用于正确布局控制器.
据我所知,这不会发生 - 视图控制器B接收到对-shouldAutoRotateToInterfaceOrientation的调用,但此调用中的interfaceOrientation参数的值是视图控制器B在呈现视图控制器C时的接口方向的值,而不是值解雇后C的界面取向 由于我们在iPad上,所有这些视图控制器都在-shouldAutoRotateToInterfaceOrientation中返回YES.因此B视图的界限永远不会改变,所以-willLayoutSubviews永远不会被调用.
我已经尝试在B解除它之前将视图控制器C的方向保存在回调中,然后在下次使用该信息时调用theAouldAutoRotateToInterfaceOrientation,并且仅在C被解除时返回Y的方向.这修复了,在没有进行此检查的情况下出现的损坏的UI,但是视图控制器B没有将其界面方向更新为此值,因此后续的模态演示将从设备的错误侧进行动画制作.
有没有人能够成功获得这样的视图控制器配置?它似乎并不像一个场景那么不寻常,所以我有点惊讶它没有像我最初预期的那样工作.
提前致谢.
我最近将Google Analytics实施iOS SDK v2了一些iOS apps,我注意到现在正在生成的报告中存在一些看似很大的差异.我主要担心的是,我的跟踪ID的总事件数大约50%低于我的内部指标所表明的.我花了一些时间试图清除可能出现的问题.
首先,我想我可能没有在应用程序内向谷歌跟踪调用,但这些都已经过检查.接下来,我测试了一些理论,即指标并非通过网络从本地数据库中获取.在设置wireshark以监控网络流量之后,这似乎也正常工作.接下来我尝试更慢地处理事件,因为我认为事件可能是在很短的时间间隔内发生的,这可能是问题所在.在将事件触发速率降低到每秒最多1次然后进一步降低到每3秒最多1次之后50%,在Web UI中监视我的测试会话时,我仍然看到大致事件丢失.此外,在我生成的报告中,哪些事件会被删除似乎有点随机.
以下是有关我的分析配置的其他一些信息:
奇怪的是,相同应用程序的Android版本没有表现出同样的问题.
如果有人有类似的经历或有任何建议,他们将不胜感激.