0

ここに私の問題があります: 私はカレンダーを週モードで実装しました。週間のナビゲーションはUIPageViewControllerin 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
    }
}

これを解決する方法を知っている人はいますか?

前もって感謝します。

よろしく

4

0 に答える 0