美文网首页
iOS中scrollToTop无效的解决方案

iOS中scrollToTop无效的解决方案

作者: 木小土 | 来源:发表于2017-08-03 20:02 被阅读86次

    前言

    scrollToTop属性提供了点击iPhone状态栏页面回到顶部的功能,极大的方便了开发者的工作量。但是在使用的过程中,因为页面的复杂,经常会造成scrollToTop不生效的问题。

    下文中提到的UIScrollView是指继承自或者包含了UIScrollView的View,如UITextView,UICollectionView, UITableView,UIWebView等

    首先,在确保scrollToTop = YES或者是scrollViewShouldScrollToTop:代理方法返回的是YES的情况下,如果scrollToTop无效,那么就要检查下当前view上是不是有多个UIScrollView了。

    接下来是逐步排查这个问题的步骤:

    1. 尝试直接查找页面上的其它UIScrollView,设置scrollToTop = NO;
    2. 如果第一步已经做过,scrollToTop仍然无效,那么就使用分类方法打印出当前页面上的所有scrollToTop = YES的view,并把隐藏的这些UIScrollView的scrollToTop设置为NO
    @interface UIView (UIScrollViewDetect)
    
    - (void)detectScrollsToTopViews;
    
    @end
    
    
    @implementation UIView (UIScrollViewDetect)
    
    - (void)detectScrollsToTopViews {
        for (UIView *view in self.subviews) {
            if ([view isKindOfClass:UIScrollView.class]) {
                UIScrollView *scrollView = (UIScrollView *)view;
                if (scrollView.scrollsToTop) {
                    NSLog(@"%@", scrollView);
                }
            }
            [view detectScrollsToTopViews];
        }
    }
    
    @end
    
    1. 如果找到了影响的UIScrollView,但是view是第三方库里的,无法修改其scrollToTop的属性,那么可以使用extension在当前类中把私有的UIScrollView的属性暴露出来,再设置其scrollToTop属性,操作方法参考另外一篇文章:
      OC中使用类别Extension调用私有方法

    作者语:
    开发中遇到的大部分问题都有迹可循,碰到问题不要急躁,认真分析,逐步突破,最终一定能解决。

    相关文章

      网友评论

          本文标题:iOS中scrollToTop无效的解决方案

          本文链接:https://www.haomeiwen.com/subject/idqmlxtx.html