UIApplicationDidBecomeActiveNotification被触发后会调用什么?

3
在我的应用程序中,我试图使导航栏在手机横向方向旋转时不要从44像素缩小到32像素。我已经通过在视图旋转时设置navigationBar的frame以及在viewDidAppear中实现了这一点。然而,当我按下主页按钮退出应用程序,然后重新进入应用程序时,导航栏仍然会缩小。因此,我实现了一个通知来检测UIApplicationDidBecomeActiveNotification,并在该方法中将navigationBar的frame高度重置为44像素。但是,它并不起作用,因为某些东西正在调用会重置我的视图frame的内容。有人知道在调用UIApplicationDidBecomeActiveNotification之后会触发什么会重置视图控制器框架的内容吗?

你的视图是从nib构建的吗? - kocodude
@kocodude - 不是手动构建的,而是通过编程实现的。 - Ser Pounce
2个回答

0

我遇到了同样的问题,如果你通过键值观察器附加一个观察者,你会发现在UIApplicationDidBecomeActiveNotification之后有一些东西被调用了。


0
在您的应用程序中,任何类都可以成为不同通知的“观察者”。当您创建视图控制器时,您可以将其注册为UIApplicationDidBecomeActiveNotification的观察者,并指定当该通知发送到您的应用程序时要调用哪个方法。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethod:) name: UIApplicationDidBecomeActiveNotification object:nil];

根据您的需要,在ViewWillDisappear/viewDidDisAppear/Dealloc中删除观察者:

[[NSNotificationCenter defaultCenter] removeObserver:self];

是的,我做了这个。视图从非活动状态返回后,它会以某种方式重置其框架或重新组织其布局,我想知道具体发生了什么。 - Ser Pounce
当应用程序变为活动状态时,它会发布通知,我们已经添加了观察者来捕获该通知,然后在其中定义的任务将开始工作。这很简单。您可以参考以下开发人员链接获取有关通知的一些信息-http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html - rishi
是的,我知道。我的意思是,除此之外,当应用程序变为活动状态时,还会调用其他内容来重置导航栏框架。 - Ser Pounce
可能有一些,但我也不知道。如果你找到了,请在这里发布。 - rishi
@CoDEFRo,我遇到了类似的问题。你解决了这个问题吗? - T.J.
@T.J. - 我放弃了在水平模式下更改navBar高度的想法,但我已经解决了消失栏的问题(必须确保隐藏和显示导航栏,而不仅仅是更改其alpha)。 - Ser Pounce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接