アプリケーションでビューをプッシュするために pushViewController を使用しています。戻るボタンを押すと、期待どおりに約 95% の確率で機能します。しかし、できるだけ早くビューに出入りすると、ポップが発生したかのようにトップバーが移動する状態に遭遇しますが、ビューは言います。この状態では、戻るボタンが残っています (通常の操作では、このボタンのテキストを「キャンセル」に変更しています)。押し戻すと、トップバーが再びアニメーション化され、トップバーにボタンがなくなり、ビュー内で立ち往生します。
ここで何が起こっているのか分かりますか?詳細は次のとおりです。
サブビューはこれらを 1 回か 2 回呼び出します。
[[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 アナリティクスも呼び出すと表示されます。これにより、アプリで他の問題が発生したことを覚えています。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSError *error;
if (![[GANTracker sharedTracker] trackPageview:@"/app_new_page"
withError:&error]) { }
}
このコードは、実際のビュー (BaseViewController ではありません) に配置されています。