如果我在一个UIScrollView中有一个UIScrollview,但我只希望包含的滚动视图接收事件并在父滚动视图Y偏移量为0时工作。
如何实现这一点?
我没有提到的警告,使用self.ptViewController.collectionView.userInteractionEnabled =是;
没有帮助,因为事件不会开始传递到滚动视图,直到用户已经释放他们的手指,大概是由于FirstResponder的变化。
发布于 2014-03-09 09:34:44
因此,在尝试了其他建议之后,我发现我无法复制无缝滚动所需的流动性,就好像它是一个表一样。
因此,长话短说,滚动视图中的滚动视图可能是个坏主意,如果您不希望用户在这两者之间滚动时将手指从屏幕上移开的话。
因此,不用麻烦,使用UICollectionView并精确定义每个节/页眉/页脚/行单元格应该如何处理。
因此,我所做的只是在Collection流布局中添加必要的属性更改,以确保所有的部分和单元格都得到了适当的处理。
由于我试图实现的特性,流程布局需要大量的数学和代码来确保所有约束都得到处理。
发布于 2014-03-05 09:07:17
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView //Or – scrollViewDidScroll:
{
if (scrollView==scrollViewA && scrollViewA.contentOffset.y == 0)
{
scrollViewB.userInteractionEnabled = YES;
}
}发布于 2014-03-05 12:17:16
据我所知,您不能在不同的滚动视图之间传输第一个响应程序,这样您就不必一次又一次地取下手指。
然而,您可以做一些其他的事情:
一旦到达父滚动视图中的y=0点,就可以使用touchesMoved事件以编程方式滚动包含的scrollview。
基本上,您需要做一个命中测试,以确保触摸在包含的scrollView中,检查容器scrollView contentOffset y位置是否为0,然后滚动容器scrollView。
类似于:
- (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
}
}
}这段代码只是一个示例,可以更好地理解我的意思。你应该根据你自己的需要调整它。
https://stackoverflow.com/questions/22193003
复制相似问题