Ios 从未调用UICollectionView didSelectRowAt
我试图在UICollectionView中选择一个单元格,我已经完成了所有工作,包括设置代理和数据源,我的滚动视图中没有点击手势识别器 我在滚动视图中有一个视图,当用户点击屏幕退出键盘时,我将其子类化为UIControl来处理,但我也删除了该视图,并且didSelectItemAt仍然没有启动。 这是我的密码:Ios 从未调用UICollectionView didSelectRowAt,ios,swift,xcode,uicollectionview,Ios,Swift,Xcode,Uicollectionview,我试图在UICollectionView中选择一个单元格,我已经完成了所有工作,包括设置代理和数据源,我的滚动视图中没有点击手势识别器 我在滚动视图中有一个视图,当用户点击屏幕退出键盘时,我将其子类化为UIControl来处理,但我也删除了该视图,并且didSelectItemAt仍然没有启动。 这是我的密码: @IBOutlet weak var templatesCollection: UICollectionView! override func viewDidLoad() {
@IBOutlet weak var templatesCollection: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
templatesCollection.delegate = self
templatesCollection.dataSource = self
}
extension AddCardViewController : UICollectionViewDelegate,UICollectionViewDataSource
{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return templates.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = templatesCollection.dequeueReusableCell(withReuseIdentifier: "template", for: indexPath) as! TemplateCollectionViewCell
cell.templateView.text = templates[indexPath.row]
cell.alignTextVertically()
cell.isUserInteractionEnabled = true
cell.layer.shadowColor = UIColor.black.cgColor
cell.layer.shadowOffset = CGSize(width: 0, height: 2.0)
cell.layer.shadowRadius = 2.0
cell.layer.shadowOpacity = 0.5
cell.layer.masksToBounds = false
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("shfgdsfgidks")
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
print("Deselected")
}
}
另外,值得一提的是,collection视图正在显示数据,因此我知道cellForItemAt函数至少正在启动,只有didSelectItemAt未被调用
collectionView及其单元格都启用了用户交互。
还有,这是我的等级结构图
因此
UICollectionView
和UITableView
都继承自UIScrollView
,不应放在另一个滚动视图中。苹果认为这是个坏主意,会引起问题。所以最好的答案是不要这样做
通常,如果需要执行此操作,通常最好将UICollectionView
嵌入UITableViewCell
中以创建布局。如果不确切知道你想做什么,就很难提出最佳方法
如果必须这样做,那么您需要查看并配置它们可以同时识别的某些手势。因此
UICollectionView
和UITableView
都继承自UIScrollView
,不应放在另一个滚动视图中。苹果认为这是个坏主意,会引起问题。所以最好的答案是不要这样做
通常,如果需要执行此操作,通常最好将UICollectionView
嵌入UITableViewCell
中以创建布局。如果不确切知道你想做什么,就很难提出最佳方法
如果您必须这样做,那么您需要查看并配置他们可以同时识别的某些手势。如果有人有相同的问题,这里是解决方法,
正如Parth所说,我没有得到点击,因为点击是为了TextView。我不得不禁用单元格内TextView的用户交互,以注册对单元格的点击 如果有人有同样的问题,这里是解决方法,
正如Parth所说,我没有得到点击,因为点击是为了TextView。我不得不禁用单元格内TextView的用户交互,以注册对单元格的点击 所以你有一个全屏收藏视图,没有其他滚动视图,没有点击手势识别器?没有子视图添加到集合视图?我自己写的。@AkshayRaina在故事板中,请检查
UICollectionView
和UICollectionViewCell
是否勾选了User Interaction Enabled
。否,实际上,我有一个带有注册表单的滚动视图,最后我有一个水平滚动的集合视图,任何地方都没有点击手势识别器,集合视图单元格有一个文本视图inside@AkshayRaina您没有得到单击,因为单击将指向TextView。如果您需要在didSelect上执行操作,请禁用手机内TextView的用户交互,这样您就可以看到一个全屏集合视图,没有其他滚动视图,任何地方都没有点击手势识别器?没有子视图添加到集合视图?我自己写的。@AkshayRaina在故事板中,请检查UICollectionView
和UICollectionViewCell
是否勾选了User Interaction Enabled
。否,实际上,我有一个带有注册表单的滚动视图,最后我有一个水平滚动的集合视图,任何地方都没有点击手势识别器,集合视图单元格有一个文本视图inside@AkshayRaina您没有得到单击,因为单击将指向TextView。如果需要对didSelect执行操作,请禁用单元格内TextView的用户交互