私のアプリのロジックは次のようなものです。VCA => VCB で、VCB には左右にスワイプする機能を備えたスクロール ビューがあります。一部のコードは、VCB で構造を理解するのに役立ちます。
self.scrollView.pagingEnabled = YES;
self.scrollView.directionalLockEnabled = YES;
self.scrollView.contentSize =CGSizeMake(CGRectGetWidth(self.scrollView.frame) * numberPages, CGRectGetHeight(self.scrollView.frame));
だから私が欲しいのは、いくつかのページを水平にリストし、左右にスワイプしてナビゲートすることです。各ページには独自のビュー コントローラー (VCB の子ビュー コントローラー) があり、次のように追加します。
if (controller.view.superview == nil)
{
[self addChildViewController:controller];
[self.scrollView addSubview:controller.view];
[controller didMoveToParentViewController:self];
}
これまでのところ、iOS 6 で問題なく動作しています。スワイプしてページを変更できます。各ページ内のすべての機能も正常に動作します。
次に、問題は iOS 7 の新機能、右にスワイプして自動的に呼び出すpopViewControllerAnimated:
、[戻る] ボタンをクリックするのと同じ効果です。競合を解決するために、interactivePopGestureRecognizer を無効にself.navigationController.interactivePopGestureRecognizer.enabled = NO;
します。ページをスワイプして変更したいだけで、強制的に戻る必要はありません。
今、本当の問題。ナビゲーションバーに戻るボタン(backBarButtonItem)を設定しました。VCB から VCA に戻るボタン ポップを使用するたびに、現在のページが最初のページではありません (つまり、左側に少なくとも 1 つのページがあることを意味します)。ポップ アニメーションは、最初にページを左側に変更し、次にアニメーションなしで VCA をすぐに表示します。
解決策はありますか?私を助けてください。