通过handleOpenUrl打开App后子视图的大小不正确

一个答题类型的Iphone应用,需要通过handleOpenUrl启动应用,接收外部传进来的题目编号参数,之后根据题目编号找到对应的题目信息,并切换到一个子视图上进行显示。子视图最下方是标准的工具栏,切换子视图时工具栏会有一个位移动画(原本是一个TabBar,如果切换到子视图,该TabBar会消失,之后ToolBar从原来TabBar的上方位移到屏幕最下面)。正常启动应用(没有通过handleOpenUrl启动),再进入该子视图时,工具栏偏移正常,紧贴屏幕最下方。 

 

通过handleOpenUrl启动时,除了最开始发送一个NSNotification告诉程序切换子视图,其它流程和正常启动时都一模一样,可偏偏这时工具栏的位置就没有紧贴屏幕最下方了,还在原始位置,弄了两天,检查了各个视图的autosizing、frame属性,都没搞明白怎么偏出来的。

 

今天不一经意看了一眼UIApplicationDelegate Protocol Reference,发现了application:didFinishLaunchingWithOptions:方法下面有行说明,

Note: It is highly recommended that you use this method to initialize your application and not the applicationDidFinishLaunching:method.

 

applicationDidFinishLaunching:是默认初始化应用的方法,但说明上建议不用这方法,而是用application:didFinishLaunchingWithOptions:方法,比较了一下,后一个方法除多个参数外,是有BOOL返回值的,默认方法是没有的。


用一个带返回值方法试了试,一切变OK了,工具栏又回到了屏幕最下面。

这个解决方法比较蹊跷,但估计是ios(我的是4.0.1)在初始化应用的流程中有些细节性的东西没描述,或者实现上还是有一些很关键的差异的。

从开始到现在解决不少蹊跷问题了,看样子ios还不是特稳定,这小白鼠当得挺痛苦。 

 

posted @ 2010-07-29 00:25  junz  阅读(1255)  评论(0编辑  收藏  举报