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

3
编辑:这个问题的关键是在编程滚动期间不显示滚动指示器,但我希望它们能够显示出来。我的原始问题(如下所示)假设这与userInteractionEnabled有关,但实际上并不是。提到主UIScrollView和从UIScrollView也可能会让人分心,而不是集中解决我的核心问题(即需要在程序化滚动期间显示滚动指示器)。对于那些根据我的误导性假设/信息回答或评论的人表示歉意。 可能的解决方案:我发现唯一的方法是利用滚动指示器是UIImageView实例的事实,并使用其类别来修改alpha值。这篇article文章展示了这种方法。然后使用标签和滚动视图委托方法,在程序化滚动之前永久打开alpha,在滚动完成时永久关闭。这种感觉很hacky,所以欢迎任何进一步的建议! 以下所有内容均为原始未编辑的问题,以提供上下文给用户的答案和评论 在一个UIScrollView对象中将userInteractionEnabled设置为NO,似乎会禁用程序滚动时的滚动指示器。即使你有self.showsVerticalScrollIndicator = self.showsHorizontalScrollIndicator = YES;也是如此。
有没有办法在编程滚动滚动视图的同时仍然显示指示器?
(为了提供一些上下文:我有一个从属滚动视图,通过连接滚动视图委托回调并将内容偏移传递给从属滚动视图来模仿主滚动视图。但是,我不希望用户直接操作从属滚动视图,但我确实想要滚动指示器)。

你为什么有这个奇怪的设置?(如果很明显,我道歉!) - jrtc27
因为我想在我的应用程序中使用一个跟随主滚动视图的从属滚动视图,但不能直接与之交互。我认为苹果自动禁用此情况下的滚动指示器很奇怪 - 只是因为用户无法进行交互并不意味着它不能被编程地滚动。 - Barjavel
能提供一下截图或模型吗?我很难理解为什么会有这种意图的行为... :/ - jrtc27
当你在滚动时调用[scrollView flashScrollIndicators]会发生什么? - Tim
嗨@Tim,我尝试了在编程滚动期间调用flashScrollIndicators的方法,但问题是滚动指示器可能会在滚动完成动画之前消失。而且在滚动发生时连续调用flashScrollIndicators也不好,因为这会导致滚动指示器闪烁。 - Barjavel
在“文章”链接上检测到病毒。 - Wanbok Choi
2个回答

0

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


0
你可以尝试在滚动视图上方添加一个透明的UIView(alpha == 0.0),但要将其作为视图层次结构中的兄弟节点而不是子视图。在透明视图上设置touchesEnabled为YES,它将拦截前往滚动视图的触摸事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接