【问题标题】:How to stop uiscrollview scrolling where user stopped touching the screen如何在用户停止触摸屏幕的地方停止 uiscrollview 滚动
【发布时间】:2012-11-24 08:52:09
【问题描述】:

我有一个 UIScrollView,我需要的是当用户停止拖动它时,滚动视图停止滚动。

有时它会起作用,但有时,当按下时,滚动会继续。

我用 scrollView.tracking 或像 scrollViewDidScroll 或 scrollViewDidEndDecelerating 等委托方法尝试了很多东西。但目前,我没有找到任何东西!

我也尝试过 UIPageControl,但我需要每 50 个像素停止一次滚动视图。

感谢您的宝贵时间和帮助!

【问题讨论】:

  • 你说得对,我更正了:)谢谢。

标签: objective-c ios uiscrollview uipagecontrol


【解决方案1】:

你需要在这个方法中添加(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)deceleratedecelerate参数表示是否应该立即停止滚动视图。尝试使用decelerationRate 属性来设置所需的速率。

【讨论】:

  • 非常感谢。但是如何将 NO 传递给委托方法?暂时。我在这个方法中添加了这一行:[self.scrollView setContentOffset:self.scrollView.contentOffset animated:YES]; / 它完成了这项工作。但我认为您的解决方案似乎更清洁。
  • 我已经改变了我的答案 - 你只需要管理你的滚动视图的decelerate 属性。 (在您的 viewDidLoad 方法中将其设置为 NO)
  • 减速属性为只读。这就是我所做的。我添加了方法 -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView / 当这个方法被调用时,我将 scrollViewContentOffset 设置为它自己的值。这会阻止减速并阻止在拖动停止的确切位置滚动。非常感谢!
  • 是的,它确实是只读的...:( 可以尝试使用 decelerationRate 吗??因为您的解决方案看起来像一个黑客...必须有一种方法可以正常进行。
  • 我尝试将其设置为 0,但它仍然滚动一点,我真的希望它在拖动结束时根本不滚动。我想我会使用我的解决方案,但让它更柔和,我将有一个可以停止滚动的点列表,并且无论用户停止拖动,滚动视图都会滚动到最近的点。谢谢你的时间斯塔斯!
猜你喜欢
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多