以编程方式滚动时在UIScrollView上显示滚动指示器

时间:2012-10-12 16:02:42

标签: ios cocoa-touch uiscrollview

编辑:这个问题的症结在于滚动指示器在程序化滚动期间不会显示,但我希望它们能够显示。我的原始问题(下面提供)假设这与userInteractionEnabled有关,但事实并非如此。提及主和从UIScrollView也可能分散我的核心问题(需要在程序化滚动期间显示滚动指示符)。向那些根据我误导性的假设/信息回答或评论的人道歉。

可能的解决方案:我发现这样做的唯一方法是使用滚动指示符是UIImageView的实例并在其上使用类别来破解alpha的事实。这个article显示了这种方法。然后是一个使用标签和滚动视图委托方法在程序滚动之前永久打开alpha的情况,并在滚动完成时永久关闭。虽然这感觉很糟糕,但欢迎任何进一步的建议!

此行以下的所有内容都是未经编辑的原始问题,可为用户的回答和评论提供背景信息

userInteractionEnabled对象中的UIScrollView设置为NO似乎会在编程滚动时禁用滚动指示符。即使您有self.showsVerticalScrollIndicator = self.showsHorizontalScrollIndicator = YES;

,也会发生这种情况

有没有办法以编程方式滚动滚动视图但仍显示指示符?

(提供一些上下文:我有一个slave scrollview,它通过挂钩scrollview委托回调并将内容偏移传递给slave scrollview来模仿主scrollview。但是,我不希望用户能够直接操纵从属滚动视图,但我确实需要滚动指示符。

2 个答案:

答案 0 :(得分:0)

不要将userInteractionEnabled设置为false,而是尝试将UIScrollView的scrollEnabled属性设置为false。文件。说“当滚动被禁用时,滚动视图不接受触摸事件”,这意味着您仍然可以以编程方式滚动UIScrollView。希望这有帮助 - 没有测试出来让我知道。

答案 1 :(得分:0)

您可以尝试在滚动视图上放置一个透明的UIView(alpha == 0.0)(但作为视图层次结构中的兄弟,而不是子视图)。在透明视图上将touchesEnabled设置为YES,它将拦截前往滚动视图的触摸。