UICollectionViewCell 向 UICollectionView didSelect 发出信号

Posted

技术标签:

【中文标题】UICollectionViewCell 向 UICollectionView didSelect 发出信号【英文标题】:UICollectionViewCell signal to UICollectionView didSelect 【发布时间】:2015-10-01 22:01:09 【问题描述】:

在我的UICollectionView 中的UICollectionViewCells 之上,我覆盖了一个拦截触摸的UIButton,这样我就可以更细致地响应触摸事件。问题是现在集合视图不再收到didSelectItemAtIndexPath 消息。 (出于显而易见的原因......按钮已经吸收了触摸并且没有向集合视图发出该项目被选中的信号。)

有没有办法向集合视图发出单元格被选中的信号?我见过类似的问题,但似乎没有一个给出令人信服的答案。

【问题讨论】:

【参考方案1】:

您可以覆盖 UIView [和子类] 上的 pointInside:withEvent: 消息并返回 false 以继续传播触摸事件。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/pointInside:withEvent:

class PassThroughButton: UIButton 
  override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool 
    // do something
    // then continue event propigation
    return false
  

【讨论】:

我真的很喜欢这个解决方案——不仅因为它解决了我的问题,而且我学会了如何传播触摸。谢谢!

以上是关于UICollectionViewCell 向 UICollectionView didSelect 发出信号的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 向 UICollectionView didSelect 发出信号

向 UICollectionViewCell 添加覆盖视图 - 不断覆盖

如何使用清晰的背景颜色向 UICollectionViewCell 添加阴影?

具有动态高度的 UICollectionViewCell 使用 NSURL 进行图像下载

如何确定何时显示 UICollectionViewCell?

XCTest 与自定义 UICollectionViewCell