gpt4 book ai didi

ios - 垂直 UIScrollView 优于水平 UIScrollView

转载 作者:行者123 更新时间:2023-12-01 18:49:49 27 4
gpt4 key购买 nike

iOS 8, swift 。我试图在水平 ScrollView 上创建垂直 ScrollView 。它们都是 UIScrollView。垂直 ScrollView 允许从底部向上滑动 View 。顶部有一个使用自动布局的间隔 View ,宽度为 1 像素,但屏幕高度为 1 像素。

这可以正常工作,直到底层 View 本身是一个支持水平滚动的 ScrollView 。

我需要以某种方式将左/右平移手势传递给 UIScrollView subview 。

目前,顶层垂直 ScrollView 正在捕获所有手势,并且不允许底层水平 ScrollView 看到事件。

我尝试了 hitTest、gestureRecognizer 委托(delegate)方法、scrollview 子类化的各种组合,但提出了一个很好的干净解决方案。

当点击垂直 ScrollView 顶部的空白空间时,我可以使用 hitTest 将事件传递到底层水平 ScrollView ,但垂直 ScrollView 永远不会处理平移或向上滑动以显示应显示的内容向上滑动。

理想情况下,我希望顶部垂直 ScrollView 仅处理向上/向下平移,并在垂直 ScrollView 位于顶部时将左/右平移传递给 subview 。

最佳答案

以下是一个可能对您有所帮助的简短方法:

Obj-C:

创建不可见的 ScrollView ,然后根据覆盖两个底层 ScrollView 的顶部不可见 ScrollView 上的触摸事件的偏移量,将不可见 ScrollView 或触摸事件的偏移量传递给下面的 ScrollView :

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
[_verticalScrollView setContentOffset:CGPointMake(0, _insivibleScrollView.contentOffset.y)];
[_horizontalScrollView setContentOffset:CGPointMake(_insivibleScrollView.contentOffset.x, 0)];
}

您创建了一个不可见的 ScrollView ,所谓不可见,我的意思是您可能必须将 alpha 值保持在 0.01 左右。您不允许水平和垂直 ScrollView 的用户交互,而是使用上面的方法,以便当用户触摸不可见的 ScrollView 时,您将这些触摸转换到下面的 ScrollView ,这些 ScrollView 被锁定以仅响应偏移量不可见的 ScrollView 。正如您在评论中所述,这个答案可能有更多内容可以满足您的个人需求,但这是基本的“基础”,将为您提供您可能想要的效果。

swift :

与上面的方法相同,但这是您需要的函数:

func scrollViewDidScroll(scrollView: UIScrollView!) {
verticalScrollView.contentOffset = CGPointMake(0, invisibleScrollView.contentOffset.y)
horizontalScrollView.contentOffset = CGPointMake(invisibleScrollView.contentOffset.x, 0)
}

关于ios - 垂直 UIScrollView 优于水平 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062988/

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