我有一个UICollectionView和一个UIButton(在右边缘)。但是在按钮的框架中,collectionView失去了它的滚动属性。
我不知道是否有任何方法可以维持这两种交互,内部的Button触摸和CollectionView滚动。
答案 0 :(得分:1)
好吧,我想出了如何做到这一点,但我使用了UITapGestureRecognizer而不是按钮rounak建议:
let tapGesture = UITapGestureRecognizer(target: self, action: "collectionViewDidReceiveTap:")
tapGesture.delegate = self
self.collectionView.addGestureRecognizer(tapGesture)
由于我希望特定的rect是“tapable”,我已经实现了UIGestureRecognizerDelegate协议,这段代码执行此操作:
public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
let collectionViewCurrentCell = self.collectionView.layoutAttributesForItemAtIndexPath(NSIndexPath(forItem: Int(self.currentPage), inSection: 0))
let cellFrameInSuperview = collectionView.convertRect(collectionViewCurrentCell!.frame, toView: self)
if gestureRecognizer.isKindOfClass(UITapGestureRecognizer) && CGRectContainsPoint(cellFrameInSuperview, touch.locationInView(self)) {
return false
}
return true
}
其中cellFrameInSuperview应该是TapGesture不应该执行任何操作的区域。但与UIButton不同,滚动继续在所有Collection界限中起作用。
如果您对如何工作或为什么有效有任何疑问,请发表评论。
答案 1 :(得分:0)
使用具有点击手势识别器的视图而不是按钮,让点击手势识别器与滚动视图的平移手势同时工作。