之前给 UITableView 中的 cell 添加手势,一直是写在 cell 里面的,今天同伴告诉我可以直接添加在 tableView 对象上,使用
CGPoint point = [longPress locationInView:_tableView];
找到相应的手势位置,然后再使用
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point];
找到 cell 所在的位置,从而找到相应的 cell,最后进行相应的处理。
🍎 在 UICollectionView 的 Incorporating Gesture Support 一章节开头出就有写道:
You should always attach your gesture recognizers to the collection view itself—not to a specific cell or view. TheUICollectionViewclass is a descendant ofUIScrollView, so attaching your gesture recognizers to the collection view is less likely to interfere with the other gestures that must be tracked. In addition, because the collection view has access to your data source and your layout object, you still have access to all the information you need to manipulate cells and views appropriately.
翻译: 你应该切记,要把手势识别器添加到 colletion view 自身上,而不是具体的 cell 或 view 上。UICollectionView 继承自是 UIScrollView, 所以添加手势识别器到 collection view 能够有效的减少与其它必须跟踪的手势识别器干扰。除此之外,因为 collection view 能够访问它的 data source 和 layout object,所以你可以更方便的获得你需要操作的 cells 和 views 的信息。
UITableView 同上。