表格单元格内的滚动视图内的自定义视图未响应事件
Posted
技术标签:
【中文标题】表格单元格内的滚动视图内的自定义视图未响应事件【英文标题】:Custom view inside scroll view inside table cell is not responding to events 【发布时间】:2016-03-20 21:30:49 【问题描述】:我的视图控制器中有一个 UITableView,在单元格内有一个水平 UIScrollView,在这个滚动视图中,我创建了许多自定义 UIView 实例(从 NIB 文件加载)
UITableViewCell
-- UIScrollView
-- MyView: UIView
现在 MyView 没有检测到触摸,层次结构中每个视图的 userInteractionEnabled 都设置为 YES,我尝试了两种方式
-
实现 touchesEnded:在 MyView 中
给它添加一个 UITapGestureRecognizer
这两种方法都行不通,我想这与我在 UITableViewCell 中有一个 UIScrollView 的事实有关
我正在用 Swift 而不是 Objective-C 编写应用程序,我认为这并不重要,因为我猜这是 UIKit 问题,但谁知道呢。
如果你有任何暗示,我会全神贯注。
谢谢
【问题讨论】:
【参考方案1】:这种情况的替代方法是添加 UITableViewCustomCell 并添加 UICollectionView 并在自定义单元格中水平滚动。它比在滚动视图中添加 UIView 更优化,因为您可以大大加快速度。无需实例化大量单元格,您只需实例化所需数量的单元格,即尽可能多的可见单元格(这是自动处理的)。如果滚动到列表中的某个区域,其中的“单元格”还没有获得视觉表示,那么您可以重复使用已经存在的单元格,而不是实例化新的单元格。
【讨论】:
我有一个自定义视图单元格,我完全同意你的观点,即 UIKit 提供的最佳解决方案是 UICollectionView,但应用程序已经构建,我不想对层次结构。以上是关于表格单元格内的滚动视图内的自定义视图未响应事件的主要内容,如果未能解决你的问题,请参考以下文章
如何从表格视图的自定义单元格内的文本字段中获取值(标签)以发布到 URL [重复]