UIScrollView 滚动可见,但 NSLog 显示它不是 [关闭]

Posted

技术标签:

【中文标题】UIScrollView 滚动可见,但 NSLog 显示它不是 [关闭]【英文标题】:UIScrollView scrolls visibly but NSLog shows it's not [closed] 【发布时间】:2013-03-30 01:52:02 【问题描述】:

此代码适用于通用。

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

我试图弄清楚为什么我的页面控件不只在 iPad 上更新。在玩过 NSLog 之后,似乎在 iPhone 上,scrollViewDidScroll 方法工作正常。它不在 iPad 上。触摸滚动视图时没有日志。

我还放了一个 NSLog 来告诉我当前页面。它在 iPad 上执行此操作,但仅当我在我的 viewDidLoad 方法上调用 loadVisiblePages 时,而不是在 scrollView 滚动时。

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

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

【问题讨论】:

我想您忘记将 iPad 中的滚动视图的委托属性 xib 连接到您在 iPhone xib 中连接的同一对象。 查看scrollview的内容大小,如果它小于ipad的view frame size,则scrollview不会滚动(因为所有内容已经在屏幕上可见),因此scrollViewDidScroll会永远不会被调用。如果您仍然面临这个问题,请告诉我。希望这会有所帮助。。 【参考方案1】:

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

【讨论】:

百分百正确,先生!没有为 UIViewController 设置委托!谢谢。

以上是关于UIScrollView 滚动可见,但 NSLog 显示它不是 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

当键盘可见时,UIScrollView滚动到按钮

键盘可见的 UIScrollView

当 UIScrollView 在可见视图之外滚动按钮时更改 UIButton textLabel 位置

UIScrollView滚动时隐藏底部导航栏问题

UIScrollView 的问题

UINavigationBar 为 UIScrollView 注册触摸