4

UIPageViewController を利用するアプリケーションを開発しています。複数のページをすばやく変更すると、実行時にいくつかの問題が発生することに気付きました。

2 つのページ変更の間に遅延 (2 または 3 ミリ秒など) を設定する方法はありますか? 前もって感謝します。

** * ** * ** * ***詳細な回答** * ** * ** * ** * **

解決策は次のとおりです。

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{

    if(completed) {
        [pageViewController.view setUserInteractionEnabled:NO];
        [self performSelector:@selector(enableUserInteraction) withObject:nil afterDelay:0.2];
    }
}

-(void)enableUserInteraction{
    [self.view setUserInteractionEnabled:YES];
}
4

2 に答える 2

3

アニメーション ブロックで、アニメーションが終了するまで userInteraction = NO に設定します。これは、ユーザーが画面を操作できず、アニメーションが終了するまでページを変更できないことを意味します。

于 2012-07-04T18:17:41.427 に答える
0

pageViewController:willTransitionToViewControllers:に入れ、dispatch_afterを使用しました。このソリューションでは、ユーザーは pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted のように 2 ~ 3 回すばやくスワイプできません。

- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
pageViewController.view.userInteractionEnabled = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    pageViewController.view.userInteractionEnabled = YES;

});

}
于 2016-01-15T11:22:53.377 に答える