UICollectionView isUserInteractionEnabled阻止单元格交互



我有一个UICollectionView,它有它的单元格,和正常情况一样。

每个小区内都有一个CCD_ 2。

当我点击一个单元格时,我会将其展开以适应窗口屏幕,但我在这里遇到了一些问题:

如果我在展开的单元格中滚动,整个屏幕都会滚动;

我想做的是阻止超视图集合视图的点击和滚动。

为了做到这一点,在将选定的单元格扩展到所需的框架后,我设置了collectionView.isScrollEnabled = falsecollectionView.isUserInteractionEnabled = false,但随之而来的是,我遇到了另一个问题:扩展的单元格与任何触摸都不交互。

我怎样才能做到这一点?展开单元格并阻止滚动视图滚动,阻止滚动视图交互,但启用单元格交互(滚动点击等)?

以下是一些代码:

主进料控制器

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let cell = collectionView.cellForItem(at: indexPath) as? FeedCell else { return }
let theAttributes:UICollectionViewLayoutAttributes! = collectionView.layoutAttributesForItem(at: indexPath)
let cellFrameInSuperview:CGRect = collectionView.convert(theAttributes.frame, to: collectionView)
cell.superview?.bringSubview(toFront: cell)
cell.backupFrame = cellFrameInSuperview
let newFrame = CGRect(x: 0, y: collectionView.contentOffset.y, width: view.frame.width, height: view.frame.height)
UIView.animate(withDuration: 0.2, animations: {
cell.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
}) { (_) in
UIView.animate(withDuration: 0.1, animations: {
cell.transform = CGAffineTransform(scaleX: 1, y: 1)
}, completion: { (_) in
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.7, options: .curveEaseInOut, animations: {
cell.frame = newFrame                   
},completion: {(_) in
cell.presentDismissButton()
self.collectionView.isScrollEnabled = false
self.collectionView.isUserInteractionEnabled = false
})
})                      
}
}

扩展单元格取消按钮属性

@objc func dismiss() {
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 1, options: .allowAnimatedContent, animations: {
self.frame = self.backupFrame!
self.sendSubview(toBack: self)
self.dismissButton.alpha = 0
},completion: nil) 
}

在disse属性中,我可以将superview交互设置为再次启用,但由于扩展了框架,我无法与之交互

如果我不禁用Main feed collectionView交互,我在这里遇到的一个问题是,当我点击扩展单元格上的任何位置时,它都会扩展另一个单元格(位于我的扩展单元格后面,它将接收来自didSelectItem(:_)的触摸事件

有什么提示吗?非常感谢。

如果设置userInteractionEnabled = false,则无法与任何子视图交互。仅仅禁用滚动还不够吗?

例如,尝试删除self.collectionView.isUserInteractionEnabled = false从你的完成块?

相关内容

  • 没有找到相关文章

最新更新