CollectionViewCell 顶部的按钮使 collectionView 停止滚动
Posted
技术标签:
【中文标题】CollectionViewCell 顶部的按钮使 collectionView 停止滚动【英文标题】:Button on top of CollectionViewCell stops collectionView from scrolling 【发布时间】:2018-01-22 20:36:56 【问题描述】:我有一个collectionView,里面有一些单元格。 在每个单元格的顶部我都有一个按钮,所以当我按下按钮时,视图会切换到另一个控制器。
我现在的问题是,当我触摸单元格并尝试滚动时,它没有。 (因为它上面的按钮)
对于 UIScrollView 中的相同问题,有这个方法:
override func touchesShouldCancel(in view: UIView) -> Bool
// Makes the scrollView scrollable when there's a button on top.
return true
我也试过这个方法:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
print("Nothing")
什么也没发生。
我该如何解决这个问题?
【问题讨论】:
你的意思是每个单元格内都有一个按钮?还是您的意思是每个单元格上方都有一个按钮,但该按钮不是单元格的子级? 我在每个单元格内都有一个按钮是的 【参考方案1】:在ViewController
的viewDidLoad()
方法中设置collectionView.canCancelContentTouches = true
。我希望它能解决您的问题。
【讨论】:
【参考方案2】:试试这个:
func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
self.scroller.isScrollEnabled = true
根据 Mark Kennedy 的回答,这里:UIButton inside UIScrollView disables scrolling
【讨论】:
抱歉,我忘了说问题出现在 collectionView 单元格内的 collectionView 中。 我想我必须重写我的问题【参考方案3】:在 Button tap 方法中检查 CollectionView 是否正在滚动。像这样
if collectionView.isDragging || collectionView.isDecelerating
//`Don't go to Another View Controller`
试一试。
【讨论】:
以上是关于CollectionViewCell 顶部的按钮使 collectionView 停止滚动的主要内容,如果未能解决你的问题,请参考以下文章