ここに私の問題があります: 私はカレンダーを週モードで実装しました。週間のナビゲーションはUIPageViewController
in pagecurl モードを使用して行われます (iPad の標準カレンダーに非常に似ています)。ユーザーがページ ナビゲーションを中止した場合を除いて、すべてが正常に機能します。そのため、カレンダーが今週を表示していて、ユーザーが来週を表示するために指でパンした後、ジェスチャを中止してページをめくらなかった場合、データソースは現在の週にとどまるのではなく、引き続き次の週を表示します。
メソッドを使ってみた
- (void)pageViewController:(UIPageViewController *)pageViewController
didFinishAnimating:(BOOL)finished
previousViewControllers:(NSArray*)previousViewControllers
transitionCompleted:(BOOL)completed
パンジェスチャがいつ中止されたかを検出し、以前のビューコントローラーを手動でリセットしましたが、結果はまったく良くありません。
データソースとデリゲート メソッドのコードは次のとおりです。
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
if (_pageIsAnimating) {
return nil;
}
[[MCalendarManager sharedCalendar] previousWeek];
MCalendarContentViewController * contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CalendarContentViewController"];
return contentViewController;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
if (_pageIsAnimating) {
return nil;
}
[[MCalendarManager sharedCalendar] nextWeek];
MCalendarContentViewController * contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CalendarContentViewController"];
return contentViewController;
}
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
_pageIsAnimating = YES;
}
- (void)pageViewController:(UIPageViewController *)pageViewController
didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers
transitionCompleted:(BOOL)completed
{
if (completed || finished) { // Turn is either finished or aborted
_pageIsAnimating = NO;
}
if (finished && !completed) {//Turn is aborted
//Do something here for not changing the viewcontroller
}
}
これを解決する方法を知っている人はいますか?
前もって感謝します。
よろしく