【问题标题】:How to find out which other UIScrollView interferes with scrollsToTop?如何找出其他哪些 UIScrollView 干扰了 scrollsToTop?
【发布时间】:2012-01-21 14:29:53
【问题描述】:

我有几个带有一个或多个滚动视图的视图控制器。尽管我在具有多个滚动视图的视图控制器中明确设置了scrollsToTop 标志,但当我点击状态栏时,一些滚动视图拒绝向上滚动。

在推动另一个视图控制器并将其弹出后,手势有时会在以前没有的视图中起作用。

这很令人困惑,我只是不知道问题出在哪里。如何有效地调试此问题?状态栏点击是否有全局(私人)通知,以便我可以手动滚动视图?

【问题讨论】:

    标签: iphone ios cocoa-touch ios5


    【解决方案1】:

    我之前使用过如下代码来调试这个场景:

    - (void)findMisbehavingScrollViews
    {
        UIView *view = [[UIApplication sharedApplication] keyWindow];
        [self findMisbehavingScrollViewsIn:view];
    }
    
    - (void)findMisbehavingScrollViewsIn:(UIView *)view
    {
        if ([view isKindOfClass:[UIScrollView class]])
        {
            NSLog(@"Found UIScrollView: %@", view);
            if ([(UIScrollView *)view scrollsToTop])
            {
                NSLog(@"scrollsToTop = YES!");
            }
        }
        for (UIView *subview in [view subviews])
        {
            [self findMisbehavingScrollViewsIn:subview];
        }
    }
    

    根据您找到的 UIScrollView 数量,您可以修改该代码以帮助调试您的特定情况。

    一些想法:

    • 更改各种滚动视图的背景颜色以在屏幕上识别它们。
    • 打印这些滚动视图的视图层次结构以识别它们的所有超级视图。

    理想情况下,您应该只在窗口层次结构中找到一个将 scrollsToTop 设置为 YES 的 UIScrollView。

    【讨论】:

    • 虽然我无法测试这个解决方案 atm,但推理是合理的。
    • 简单而美丽的sn-p!
    【解决方案2】:

    为方便起见,我将接受的答案更改为 swift:

    斯威夫特 5

    func findMisbehavingScrollViews() {
        let topView = UIApplication.shared.windows.first { $0.isKeyWindow }
        findMisbehavingScrollViewsIn(topView!)
    }
    
    func findMisbehavingScrollViewsIn(_ topView: UIView) {
        if let topView = topView as? UIScrollView {
            if topView.scrollsToTop {
                print("Found UIScrollView: \(topView)")
            }
            for nextView in topView.subviews {
                findMisbehavingScrollViewsIn(nextView)
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 2023-03-03
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多