ios 在两个 uiscrollview 之间移动触摸事件

标签 ios objective-c cocoa-touch uitableview uiscrollview

我正在构建一个 iOS 布局,它由一个 UITableView 和一个 UIScrollView 组成。 UIScrollView 位于 UITableView 的表格单元格内,可以水平和垂直滚动。下图显示了这种情况。如果用户开始在 UIScrollView 上向下/向上滚动,滚动事件应该触发 TableView 的 setContentOffset,而不是 ScrollView 的 setContentOffset而 ScrollView 的顶部将位于虚线上(它的高度不变)。然后滚动触摸事件应该触发 ScrollView 的 setContentOffset,而不是表格 View 。

另一种情况:当用户开始在表格 View 上滚动时,应该触发表格 View 的setContentOffset,直到 ScrollView 到达虚线。然后 ScrollView 应该处理 setContentOffset

我的问题是如何在一次滑动期间在 TableView 和 ScrollView 之间传输触摸事件。

enter image description here

最佳答案

这听起来像是您想要非常具体和定制的东西的情况之一。因此,尝试使用手势识别器做一些聪明的事情是不够的。

主要问题是您可以控制手势识别器的方式,例如使用 gestureRecognizer:shouldReceiveTouch:gestureRecognizerShouldBegin: 只会影响手势的开始(或新的触摸,而不是持续的),但是您希望单个持续的手势在控制每个 View 之间进行转换。因此,出于这个原因,我认为您需要在整个屏幕上放置一个大的透明 View ,并在其上放置一个平移手势识别器,并在您的 handlePan 方法中决定您要调整哪个 View ,然后直接调用 setContentOffset在那个观点上。您可以使用平移识别器的翻译和现有内容偏移来计算新的。我知道这不是很优雅,但我想不出另一种方法来达到你想要的效果。

关于ios 在两个 uiscrollview 之间移动触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709135/

相关文章:

ios - 我可以检测 iPhone 是否启用了模糊功能吗?

ios - 是否可以仅从 native 移动应用程序使用 Facebook 的分数和成就 API?

objective-c - 取消隐藏由 setHidesOnDeactivate 隐藏的 NSwindow?

cocoa-touch - 有人知道 mypad twitter 使用什么控件/sdk 吗?

ios - 来自两个 API 的一个 TableView

ios - 以编程方式更改多个按钮

ios - 类名的 NSString 占位符

ios - 我尝试在 iPhone 的后台显示 FCM 通知,但是当我使用 Swift 发送此通知时它不起作用

ios - Swift:当我转到另一个 View Controller 时,内存未清除,收到内存警告

ios - UIActivityTypeCopyToPasteboard 如何附加图像和文本