didSelectItemAtIndexPath不会在自定义collectionViewCell中有标签时调用
我有一个自定义collectionViewCell,标签覆盖整个collectionViewCell大小。一切似乎按计划进行,但唯一看起来不起作用的是collectionViewCell不调用didSelectItemAtIndexPath
。我做错了什么?为什么不是UILabel将事件传递给超级视图。用户交互在UILabel上启用。didSelectItemAtIndexPath不会在自定义collectionViewCell中有标签时调用
编辑:添加TAP姿态LABEL
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { collectionView.registerNib(UINib(nibName: "ProductSizeCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CollectionViewCell")
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! ProductSizeCollectionViewCell
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(ProductDetailPageController.sizeTapped(_:)))
cell.sizeLabel.tag = indexPath.row
cell.sizeLabel.addGestureRecognizer(tap)
return cell
}
func sizeTapped(sender : UITapGestureRecognizer) {
let view = sender.view as? UILabel
print(view!.tag)
let indexPath = NSIndexPath(forItem: view!.tag, inSection: 0)
let cell = collectionViewSize.cellForItemAtIndexPath(indexPath) as! ProductSizeCollectionViewCell
if !cell.selectedCell {
cell.selectedCell = true
cell.layer.borderColor = UIColor(hexString: "9E9E9E").CGColor
} else {
cell.selectedCell = false
cell.layer.borderColor = UIColor(hexString: "E8E6E4").CGColor
}
collectionViewSize.reloadData()
}
回答:
也许你有问题别处。你可以仔细检查集合视图委托是否真正通过在控制台上记录设置?
另外:
collectionView.registerNib(UINib(nibName: "ProductSizeCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CollectionViewCell")
应该在一些设置方法一次设定。
由于集合视图(如表视图)使用可重复的细胞这一行:
cell.sizeLabel.addGestureRecognizer(tap)
可以将多个手势识别器添加到一个标签。在这种情况下,我更喜欢单元格触发的回调块。
以上是 didSelectItemAtIndexPath不会在自定义collectionViewCell中有标签时调用 的全部内容, 来源链接: utcz.com/qa/261177.html