首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIScrollView中滚动UIScrollView

在UIScrollView中滚动UIScrollView
EN

Stack Overflow用户
提问于 2014-03-05 09:03:27
回答 3查看 122关注 0票数 0

如果我在一个UIScrollView中有一个UIScrollview,但我只希望包含的滚动视图接收事件并在父滚动视图Y偏移量为0时工作。

如何实现这一点?

我没有提到的警告,使用self.ptViewController.collectionView.userInteractionEnabled =是;

没有帮助,因为事件不会开始传递到滚动视图,直到用户已经释放他们的手指,大概是由于FirstResponder的变化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-09 09:34:44

因此,在尝试了其他建议之后,我发现我无法复制无缝滚动所需的流动性,就好像它是一个表一样。

因此,长话短说,滚动视图中的滚动视图可能是个坏主意,如果您不希望用户在这两者之间滚动时将手指从屏幕上移开的话。

因此,不用麻烦,使用UICollectionView并精确定义每个节/页眉/页脚/行单元格应该如何处理。

因此,我所做的只是在Collection流布局中添加必要的属性更改,以确保所有的部分和单元格都得到了适当的处理。

由于我试图实现的特性,流程布局需要大量的数学和代码来确保所有约束都得到处理。

票数 0
EN

Stack Overflow用户

发布于 2014-03-05 09:07:17

代码语言:javascript
复制
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView //Or – scrollViewDidScroll:
{
    if (scrollView==scrollViewA && scrollViewA.contentOffset.y == 0) 
    {
            scrollViewB.userInteractionEnabled = YES;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-03-05 12:17:16

据我所知,您不能在不同的滚动视图之间传输第一个响应程序,这样您就不必一次又一次地取下手指。

然而,您可以做一些其他的事情:

一旦到达父滚动视图中的y=0点,就可以使用touchesMoved事件以编程方式滚动包含的scrollview。

基本上,您需要做一个命中测试,以确保触摸在包含的scrollView中,检查容器scrollView contentOffset y位置是否为0,然后滚动容器scrollView。

类似于:

代码语言:javascript
复制
- (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event 
{
  if (scrollViewContainer.contentOffset.y == 0) 
  {
      if ([self hitTest:[[touches anyObject] locationInView:containedScrollView] withEvent:nil])
      {
          //programatically scroll your contained scrollView
      }
  }
}

这段代码只是一个示例,可以更好地理解我的意思。你应该根据你自己的需要调整它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22193003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档