Dav*_*vid 2 uiscrollview horizontal-scrolling vertical-scrolling uigesturerecognizer ios
iOS 8,斯威夫特。我试图在水平滚动视图上创建垂直滚动视图。它们都是 UIScrollView。垂直滚动视图允许从底部向上滑动视图。顶部有一个使用自动布局的间隔视图,宽度为 1 像素,但屏幕高度为 1 像素。
在底层视图本身是支持水平滚动的滚动视图之前,这种方法可以正常工作。
我需要以某种方式将左/右平移手势传递给 UIScrollView 子视图。
目前,顶层垂直滚动视图正在捕获所有手势,并且不允许底层水平滚动视图看到事件。
我尝试了 hitTest、gestureRecognizer 委托方法、scrollview 子类化的各种组合,但提出了一个很好的干净解决方案。
当点击垂直滚动视图顶部的空白空间时,我可以使用 hitTest 将事件传递到底层水平滚动视图,但垂直滚动视图永远不会处理平移或向上滑动以显示应该出现在滑动上的内容向上。
理想情况下,我希望顶部垂直滚动视图仅处理向上/向下平移,并在垂直滚动视图位于顶部时将左/右平移传递给子视图。
这是一个可能对您有所帮助的简短方法:
对象C:
创建不可见的滚动视图,然后根据覆盖两个底层滚动视图的顶部不可见滚动视图上的触摸事件的偏移量,将不可见滚动视图或触摸事件的偏移量传递给下面的滚动视图:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
[_verticalScrollView setContentOffset:CGPointMake(0, _insivibleScrollView.contentOffset.y)];
[_horizontalScrollView setContentOffset:CGPointMake(_insivibleScrollView.contentOffset.x, 0)];
}
Run Code Online (Sandbox Code Playgroud)
您创建了一个不可见的滚动视图,所谓不可见,我的意思是您可能必须将 alpha 值保持在 0.01 左右。您不允许水平和垂直滚动视图的用户交互,而是使用上面的方法,以便当用户触摸不可见的滚动视图时,您将这些触摸转换到下面的滚动视图,这些滚动视图被锁定以仅响应偏移量不可见的滚动视图。正如您在评论中所述,这个答案可能有更多内容可以满足您的个人需求,但这是基本的“基础”,将为您提供您可能想要的效果。
迅速:
与上面的方法相同,但这是您需要的函数:
func scrollViewDidScroll(scrollView: UIScrollView!) {
verticalScrollView.contentOffset = CGPointMake(0, invisibleScrollView.contentOffset.y)
horizontalScrollView.contentOffset = CGPointMake(invisibleScrollView.contentOffset.x, 0)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |