我正在构建一个 iOS 布局,它由一个 UITableView
和一个 UIScrollView
组成。 UIScrollView
位于 UITableView
的表格单元格内,可以水平和垂直滚动。下图显示了这种情况。如果用户开始在 UIScrollView
上向下/向上滚动,滚动事件应该触发 TableView 的 setContentOffset
,而不是 ScrollView 的 setContentOffset
而 ScrollView 的顶部将位于虚线上(它的高度不变)。然后滚动触摸事件应该触发 ScrollView 的 setContentOffset
,而不是表格 View 。
另一种情况:当用户开始在表格 View 上滚动时,应该触发表格 View 的setContentOffset
,直到 ScrollView 到达虚线。然后 ScrollView 应该处理 setContentOffset
。
我的问题是如何在一次滑动期间在 TableView 和 ScrollView 之间传输触摸事件。
最佳答案
这听起来像是您想要非常具体和定制的东西的情况之一。因此,尝试使用手势识别器做一些聪明的事情是不够的。
主要问题是您可以控制手势识别器的方式,例如使用 gestureRecognizer:shouldReceiveTouch:
和 gestureRecognizerShouldBegin:
只会影响手势的开始(或新的触摸,而不是持续的),但是您希望单个持续的手势在控制每个 View 之间进行转换。因此,出于这个原因,我认为您需要在整个屏幕上放置一个大的透明 View ,并在其上放置一个平移手势识别器,并在您的 handlePan 方法中决定您要调整哪个 View ,然后直接调用 setContentOffset
在那个观点上。您可以使用平移识别器的翻译和现有内容偏移来计算新的。我知道这不是很优雅,但我想不出另一种方法来达到你想要的效果。
关于ios 在两个 uiscrollview 之间移动触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709135/