【发布时间】:2011-07-13 18:31:42
【问题描述】:
我正在编写一个应用程序,如果用户在打电话时正在查看应用程序,我需要更改视图。
我已经实现了以下方法:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"viewWillAppear:");
_sv.frame = CGRectMake(0.0, 0.0, 320.0, self.view.bounds.size.height);
}
但是当应用返回前台时它不会被调用。
我知道我可以实现:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarFrameChanged:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
但我不想这样做。我更愿意将我所有的布局信息放在 viewWillAppear: 方法中,让它处理所有可能的场景。
我什至尝试从 applicationWillEnterForeground: 调用 viewWillAppear:,但我似乎无法确定此时哪个是当前视图控制器。
有人知道处理这个问题的正确方法吗?我确定我缺少一个明显的解决方案。
【问题讨论】:
-
您应该使用
applicationWillEnterForeground:来确定您的应用程序何时重新进入活动状态。 -
我说我在我的问题中尝试过。请参考上文。您能否提供一种方法来确定应用程序委托中的当前视图控制器?
-
您可以根据需要使用
isMemberOfClass或isKindOfClass。 -
@sudo rm -rf 那将如何工作?他将如何调用 isKindOfClass?
-
@occulus:天知道,我只是想回答他的问题。当然,你的方式就是要走的路。
标签: ios objective-c iphone viewwillappear