gpt4 book ai didi

ios - 当子 ScrollView 到达末尾时滚动父 ScrollView

转载 作者:可可西里 更新时间:2023-11-01 04:00:59 27 4
gpt4 key购买 nike

我有一个包含在父 ScrollView (不是直接 subview )中的子 ScrollView 。我想要的是,一旦子 ScrollView 到达其内容的末尾,父 ScrollView 就开始沿相同方向滚动。

这种开箱即用的方式,但并非如此。现在,我必须抬起手指才能让父 ScrollView 在 child 到达终点后开始滚动。

对此有什么想法吗?

编辑:

通过在表格 View 单元格中向右滑动以显示聊天 Controller ,可以在 Snapchat 中看到我正在寻找的示例。

最佳答案

不确定我是否正确理解不是直系 child 的意思。但是一旦你到达 subview 滚动的末尾,iOS 应该会自动为你做它应该让你滚动父滚动。

为此,您需要为 child 实现:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:   (BOOL)decelerate{
scrollView.bounces = NO;
}

scrollView.bounces = NO 不会让 scrollView 在结束滚动时跳回。所以它只是停留在它停止滚动的位置。

然后您需要从子项的 scrollViewDidScroll 方法触发父项滚动。

类似于:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat scrollViewHeight = scrollView.frame.size.height;
CGFloat scrollContentSizeHeight = scrollView.contentSize.height;
CGFloat scrollOffset = scrollView.contentOffset.y;

CGFloat offset = scrollContentSizeHeight - (scrollOffset + scrollViewHeight);
if (offset <= 0)
[self.parentView setContentOffset:CGPointMake(self.parentView.contentOffset.x, self.parentView.contentOffset.y + diffOffset) animated:YES];
}

其中 diffOffset 是您希望 parentScroll 滚动的距离。

您可能更喜欢更高级的解决方法。

例如你可以实现

scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

所以你知道滚动的速度是多少,将targetContentOffsetscrollContentSizeHeightscrollViewHeight进行比较应该让你知道这个特定的滚动即将结束拖动到达 ScrollView 内容的末尾。

并且可以更准确地计算diffOffsetanimationTime

当 subview 在父滚动中不完全可见时,最好阻止 subview 的滚动,这样滚动功能只会在您向上滚动到特定位置时出现。

关于ios - 当子 ScrollView 到达末尾时滚动父 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32537535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com