【问题标题】:How to prevent UIScrollView to scroll through two pages?如何防止 UIScrollView 滚动两个页面?
【发布时间】:2012-12-12 12:45:07
【问题描述】:

我有UIScrollView,我在pagingEnabled 模式下使用它。在这个UIScrollView 中,我有很多图片要加载。所以不可能全部加载。我决定加载五个五个。最初,我加载了五张图片并设置了它们的位置、大小和标签。到目前为止,我能够做到这一点。

一旦用户到达第四页,我需要设置第六页并从超级视图中删除第一页。为此,我正在使用这种方法来做到这一点。

[[self.scrollView viewWithTag:currentPage-3] removeFromSuperView];

为了正确检测页面更改事件,我几乎使用了UIScrollView 的所有委托方法,但是当用户连续滚动时,我错过了页面。所以,我无法正确加载图像。例如,当我错过加载第 6 页时,我无法加载第 8 页。

我尝试禁用userInteraction mode,即使设置为NO,用户也可以继续滚动。

我想做的是,当用户更改页面时,我想禁用UIScrollView 滚动,直到我完成将图像加载到UIScrollView

你们有什么想法,我该怎么做?

谢谢。

【问题讨论】:

  • 如果你想要这样一个限制性的 UI,为什么不直接使用 UISwipeGestureRecognizer 来换页呢?
  • 看来 UIScrollView 更适合在我的情况下使用。因为我需要使用 clipsToTounds 属性。另外,我没有足够的 UISwipeGEstureRecognizer 经验
  • UISwipeGestureRecognizer 比 PageControl 更容易使用。你需要做的就是正确处理动画。
  • @mstfbsnli 绝对没有理由不能将 clipsToBounds 与任何其他 UIView 一起使用。 UISwipeGestureRecognizer 非常易于使用,在 SO 和其他地方都有大量资源。
  • @FilipRadelic,嗯,我明白为什么我不使用 UISwipeGestureRecognizer,当我使用 UIScrollView 时,页面之间的通道非常流畅,看起来不错,使用 UISwipeGestureRecognizer 时这是不可能的。

标签: iphone ios uiscrollview uikit


【解决方案1】:

我想要做的是,当用户更改页面时,我想禁用 UIScrollView 滚动,直到我完成将图像加载到 UIScrollView 中。

如果您想在每次页面滚动后禁用滚动,请查看 UIScrollViewDelegate 方法,例如 scrollViewDidScroll:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intf/UIScrollViewDelegate

scrollViewDidScroll: 内,您可以将UIScrollView 上的scrollEnabled 设置为NO。图像完成加载后,重新启用滚动相同的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2014-09-10
    相关资源
    最近更新 更多