我有一UICollectionViewController
堂课,上面放着一堆细胞。当用户触摸一个单元格时,我想使用该touchesBegan
方法来防止新的触摸,直到第一次触摸完成对单元格的选择。
我尝试将以下代码放在我的视图控制器中,但它从未被调用。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
print("touches began")
}
但是,在我的项目的其他地方,我有另一个类是UIViewController
. 在那里,我touchesBegan
在下面的代码中使用来关闭该类中文本视图的键盘,并且该代码被调用得很好。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
view.endEditing(true)
}
为什么这段代码在一个类而不是另一个类中工作?以及如何在我的集合视图单元格中使用touchesBegan
来UICollectionViewController
检测触摸?Swift 中的解决方案将不胜感激。谢谢你的时间!
研究: 我检查了这个解决方案: Handle Touch in UiCollectionView? 但答案大多适用于该特定项目。
我尝试使用手势识别器运行self.collectionView?.userInteractionEnabled = false
,但手势识别器不会触发selector.state == .Began
,仅用于.Ended
. 所以我不能用它来防止进一步的接触。
我也尝试使用 aUILongPressGestureRecognizer
来做同样的事情,但是该手势会阻止集合视图单元格侦听的默认点击手势,因此从未接收到单元格上的常规点击,因此无法选择单元格。
我发布了一个解决方法作为答案,尽管它没有回答原始问题。