UIScrollView可视地滚动,但NSLog显示它不是

时间:2013-03-30 01:52:03

标签: ios ipad uiscrollview uipagecontrol

此代码适用于Universal。

我的iPhone和iPad布局几乎相同。就对象类型而言,它们是相同的。

我正在试图找出为什么我的页面控件不会仅仅在iPad上更新。在使用NSLog之后,似乎在iPhone上,scrollViewDidScroll方法正常运行。它不在iPad上。触摸滚动视图时无记录。

我还放了一个NSLog来告诉我当前的页面。它是在iPad上完成的,但只有当我在loadVisiblePages方法上调用viewDidLoad时,才会滚动。[/ p>

请忽略我对第一页和最后一页进行硬编码的部分,因为这通常是以编程方式完成的,但由于这个小错误,我必须将所有页面加载到内存中。

- (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");
}

1 个答案:

答案 0 :(得分:2)

如果滚动视图在屏幕上滚动,但没有调用方法,则可能是您忘记将滚动视图的委托设置为iPad故事板中的视图控制器。