触摸时收缩UICollectionViewCell - 延迟ContentTouches问题。

问题描述 投票:0回答:1

我有一个scrollView,其中包含有collectionView的模块和tableView的模块。因此,你可以用scrollView上下滚动,并在collectionView模块中左右滚动。在按下collectionView单元格后,用户会被导航到另一个视图控制器。

以下是用户界面的大致草图。

我需要让集合视图中的单元格在触摸时收缩。问题是,当我尝试这样做时--我在触摸和开始收缩之间有轻微的延迟。我使用这段代码来使单元格收缩。

 func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
    if let cell = collectionView.cellForItem(at: indexPath) {
        UIView.animate(withDuration: 0.1) {
            cell.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
        }
    }
}

我知道延迟发生的原因是 delaysContentTouches 属性自动设置为 true 在UICollectionViews中,为了检测用户的正确滚动和选择触摸。所以我把它设置为 false,而且由于collectionView位于我上面提到的scrollView里面--我必须同时设置了 delaysContentTouches 为false,以消除collectionView单元格的触摸和收缩之间的延迟。

问题是,当我在滚动视图中设置 delaysContentTouches 为false--它也会自动应用于tableView,而且当你只是上下滚动时,tableView内的单元格也会立即开始高亮,在这种情况下,这绝对是不可取的行为。

我试过将 "高亮 "设置为 delaysContentTouches 在tableView中,以 true但这对防止这种行为没有帮助。

有什么办法可以让我的单元格只在collectionView中立即收缩,而不触及tableView的高亮功能?我对这个很陌生,所以希望得到任何建议。

ios swift uitableview uicollectionview touch
1个回答
0
投票

不知道这是否有帮助,但为什么你不使用UICollectionView的 didSelectItemAt 而不是 didHighlightItemAt?

这可能是另一个延迟的原因。

© www.soinside.com 2019 - 2024. All rights reserved.