我正在使用 pushViewController 在我的应用程序中推送视图。按下后退按钮大约 95% 的时间都与您预期的一样。但是,如果我尽可能快地进出视图,我会遇到顶部栏移动的情况,就好像发生了弹出一样,但视图会显示。在这种状态下,我留下了一个后退按钮,(在正常操作中,我已将此按钮的文本更改为“取消”)。按下返回将再次为顶栏设置动画,然后我在顶栏中没有任何按钮,我被困在视图中。
你知道这里会发生什么吗?以下是更多细节:
子视图调用这些一次或两次:
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
子视图也扩展了 BaseViewController。在这个基本控制器中,所有的视图方法都被重载(它们只是调用 super)。可能有趣的是:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self customizeNavigationBar];
}
- (void)customizeNavigationBar
{
[self.navigationController.navigationBar setTintColor:UIColorFromRGB(kNavigationBackgroundColor)];
UIBarButtonItem *backButton_ = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"ID_BUTTON_BACK", @"") style:UIBarButtonItemStyleBordered target:self action:nil];
self.navigationItem.backBarButtonItem = backButton_;
[backButton_ release];
}
如果您需要更多代码或者我是否可以更好地解释事情,请告诉我。
--- 编辑 ---- 我也在调用 Google Analytics in view 会出现。我记得这会导致我的应用程序出现其他问题:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSError *error;
if (![[GANTracker sharedTracker] trackPageview:@"/app_new_page"
withError:&error]) { }
}
这段代码被放在我的实际视图中(不是 BaseViewController)。