我已经在集合视图上附加了一个UILongPressGestureRecognizer,目的是让用户长按单元格并被询问是否要删除它。但问题在于我无法像处理表格单元格那样获取indexPath(使用indexPathForRowAtPoint),是否有相应方法来解决?如果没有,我考虑将手势添加到每个单元格中,但如何识别手势(我看不到手势的“tag”)?例如,我能否在选择器中发送indexPath.item?或者其他方法?
在 UICollectionView
上同样可以使用这个方法。根据文档:
indexPathForItemAtPoint:返回集合视图中特定点的项目的索引路径。
- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point 参数 point:集合视图坐标系中的一点。 返回值:指定点处项目的索引路径,如果指定点未找到项目,则返回nil。
讨论:该方法依赖于相关布局对象提供的布局信息,以确定哪个项包含该点。
可用性:iOS 6.0及更高版本可用。在UICollectionView.h文件中声明。
public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?{
let offsetPoint = self.musicCollectionVw.contentOffset
let realLocation = CGPoint(x: location.x + offsetPoint.x, y: location.y + offsetPoint.y)
if let indexPath = self.musicCollectionVw.indexPathForItem(at: realLocation){
NSLog("Section: \(indexPath.section) Row: \(indexPath.row)")
}
return nil
}
RegisterForPreviewingWithDelegate(new PhotoPreviewingDelegate(this), this.CollectionView);
- TahariCGPoint
从我的view
坐标系转换为我的collectionView
坐标系。let actualLocation = view.convert(location, to: collectionView)
- M-P