2

このコードはユニバーサル用です。

iPhone と iPad のレイアウトはほぼ同じです。また、オブジェクト タイプに関する限り、それらは同一です。

iPad だけでページ コントロールが更新されない理由を理解しようとしています。NSLog をいじってみると、iPhone ではscrollViewDidScrollメソッドが正しく機能しているようです。iPadにはありません。スクロールビューをタッチしてもログがありません。

また、現在のページを教えてくれる NSLog も入れました。iPadでそれを行いますが、scrollViewがスクロールするときではなくloadVisiblePages、メソッドを呼び出したときのみです。viewDidLoad

最初と最後のページをハード コードしたセクションは無視してください。これは通常プログラムで行うためですが、この小さなバグのために、すべてのページをメモリにロードする必要がありました。

- (void)loadVisiblePages {
    // First, determine which page is currently visible
    CGFloat pageWidth = self.scrollView.frame.size.width;
    NSInteger page = (NSInteger)floor((self.scrollView.contentOffset.x * 2.0f + pageWidth) / (pageWidth * 2.0f));

    // Update the page control
    self.pageControl.currentPage = page;
    NSLog(@"Page number is %i", page);

    // Work out which pages you want to load
    NSInteger firstPage = 0; // page - 1;
    NSInteger lastPage = 3; //page + 1;


    // Purge anything before the first page
    for (NSInteger i=0; i<firstPage; i++) {
        [self purgePage:i];
    }

    // Load pages in our range
    for (NSInteger i=firstPage; i<=lastPage; i++) {
        [self loadPage:i];
    }

    // Purge anything after the last page
    for (NSInteger i=lastPage+1; i<self.pageImages.count; i++) {
        [self purgePage:i];
    }

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // Load the pages that are now on screen
    [self loadVisiblePages];
    NSLog(@"Scroll View Did Scroll");
}
4

1 に答える 1

2

スクロール ビューが画面上でスクロールしているが、メソッドを呼び出していない場合は、iPad ストーリーボードでスクロール ビューのデリゲートをビュー コントローラーに設定するのを忘れた可能性があります。

于 2013-03-30T03:07:49.110 に答える