在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是啥?
Posted
技术标签:
【中文标题】在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是啥?【英文标题】:What's the ideal way to detect tap/touch for multiple UI views inside a custom table cell?在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是什么? 【发布时间】:2016-01-30 06:18:07 【问题描述】:我有一个带有自定义单元格的表格视图,每个单元格都包含多个 UI 视图。
当用户点击单元格内的 UI 视图时,应用会根据所点击的 UI 视图做出响应。例如,有三行,每行有不同数量的 UI 视图:(这些视图可能是图像、标签以组成不同的布局)
row1 - view1 view2 view3
row2 - view4 view5
row3 - view6 view7 view8 view9
如果用户点击 row3/view8,应用程序将检测到点击并知道 view8 被点击。
目前我有两个方向来实现这个:
(1) 在每个 UI 视图中添加UITapGestureRecognizer
(2) 检测 table view 上的触摸,并通过计算哪个 UI 视图包含触摸点来决定点击可见单元格的哪个 UI 视图,例如 the answer of this question。
我想知道理想的方式是什么?还有其他更好的方法或建议吗?
【问题讨论】:
【参考方案1】:我会允许视图直接检测和处理水龙头。对我来说似乎最简单,这更像是 UIKit 的设计方式。 UITapGestureRecognizer
似乎很适合这个。
【讨论】:
谢谢。只是一个问题,由于行和 UIView 很多,所以有很多手势识别器会不会有太多的性能开销? 表格视图滚动时需要更新的视图数量会影响性能。如果您遇到性能问题,您可以做很多事情来优化它。例如,尽量不要使用透明背景或缩放任何东西。模拟器应用程序中的调试菜单可以帮助您解决这个问题。但我不认为手势识别器会对性能产生很大影响。 无论如何,不要过早优化。编写易于维护的代码。然后测试。然后,如果出现性能问题,请使用上述 Apple 工具和 Instruments 来查找问题并从那里解决。【参考方案2】:您可以为此使用 UICollectionView。参考
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/ http://www.appcoda.com/ios-programming-uicollectionview-tutorial/【讨论】:
不,不一样。这些视图是组成不同布局的图像和标签。我会将这个添加到我的问题中。以上是关于在自定义表格单元格内检测多个 UI 视图的点击/触摸的理想方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
通过点击单元格内的图像从 UITableViewCell 中分离