gpt4 book ai didi

ios - UICollectionView isUserInteractionEnabled 阻止单元格交互

转载 作者:行者123 更新时间:2023-11-28 08:01:08 33 4
gpt4 key购买 nike

我有一个 UICollectionView,它像往常一样有它的单元格。

每个单元格本身都有一个 UICollectionViewController

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

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

我试图用它来阻止 superview collection view 点击和滚动。

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

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

部分代码如下:

主进给 Controller

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
})
})
}
}

Expanded Cell dismiss button 属性

@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)
}

在 dismiss 属性中,我可以再次将 superview 交互设置为启用,但是对于展开的框架,我无法与之交互。

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

有什么提示吗?谢谢。

最佳答案

如果您设置 userInteractionEnabled = false 那么您将无法与任何 subview 进行交互。仅仅禁用滚动还不够吗?

例如尝试删除 self.collectionView.isUserInteractionEnabled = false来自你的完成 block ?

关于ios - UICollectionView isUserInteractionEnabled 阻止单元格交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666745/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com