如何在枚举UIScrollView的子视图时排除滚动指示器?

jha*_*ott 9 iphone uiscrollview uikit ipad ios

我正在尝试调整我subviewsUIScrollView子类,但我不想打扰滚动指示器.似乎没有任何公共接口来访问这些并且我想检查视图是否是滚动指示符之一(以便我可以忽略它).

UIScrollView.h 声明这两个iVars:

UIImageView* _verticalScrollIndicator;
UIImageView* _horizontalScrollIndicator;
Run Code Online (Sandbox Code Playgroud)

...但我尝试了以下内容并收到链接器错误:

for(UIView* v in self.subviews)
{
    // Ignore the scroll-indicator views
    if( (v == _horizontalScrollIndicator) ||
        (v == _verticalScrollIndicator))
    {
        continue;
    }
    // View is one of mine - do stuff to it...
}
Run Code Online (Sandbox Code Playgroud)

苹果显然不希望你搞砸这些,在这种情况下,他们应该做一些聪明的事情,以便返回的数组subviews不包括它们(来苹果,它不是那么难!),但在那之前我怎么能忽略它们?

小智 6

这最终成了我的解决方案

BOOL showsVerticalScrollIndicator = self.showsVerticalScrollIndicator;
BOOL showsHorizontalScrollIndicator = self.showsHorizontalScrollIndicator;

self.showsVerticalScrollIndicator = NO;
self.showsHorizontalScrollIndicator = NO;

// loop through self.subviews here

self.showsVerticalScrollIndicator = showsVerticalScrollIndicator;
self.showsHorizontalScrollIndicator = showsHorizontalScrollIndicator;
Run Code Online (Sandbox Code Playgroud)


Kur*_*vis 2

想必您可以控制放入UIScrollView. 为什么不维护自己的这些视图数组呢?这样,您就可以安全地应对 UIScrollView 实现中的任何未来更改。