2016-08-12 322 views
1

我有一个UICollectionView。它的单元格里面有一个UICollectionView。检测另一个单元格内的单元格选择

enter image description here

当含有的CollectionView小区被分接(经由didSelectItemAtIndexPath)我可以检测。但是,我无法检测单元格内的collectionView的单元格(如各个太阳图标所示)是何时被点击的。

用户交互在每件事上都启用。我试着重写collectionView as described here的hitTest。

更新:我在一个简单的测试项目中再次尝试这个,它工作正常。然而,在我当前的项目中,出于某种原因,最内层嵌套的collectionView(带有太阳图标)不会出现在视图调试器中。

enter image description here

通知我做出了的CollectionView背景蓝色和粉红色细胞。并且它们在视图调试时不会出现,虽然它们出现在正在运行的应用程序中?

+1

你是否将包含UICollectionView的UICollectionViewCell的委托设置为self?这意味着您应该继承UICollectionViewCell的子类,并在该子类中设置UICollectionView,并将该UICollectionView的委托设置为UICollectionViewCell。此外,你不应该被打乱测试。 UIResonder链很少需要一些大规模的干预,并且在这个问题上,我怀疑你需要走得比正确设置授权更远。 – Loxx

+0

@Loxx是的,内部collectionView的代表被设置为它所在的单元格 – vikzilla

+1

嗯,让我拉起来和旧的项目,看看我是如何解决这个问题的。我会在这里很快发布 – Loxx

回答

0

一旦我从使用我的单元格的XIB更改为使用故事板中的常规单元格,则不会发生此问题。

0

我以前做过这件事......但这有点难以解释。 简短的答案是TapGestures。

所以我通过故事板绘制了tableView。集合视图以编程方式添加。

对于TableView cellforRow,我调用了UITableViewCell子类。我通过rootView作为委托。其中调用了CollectionViewClass。这是单元格的实际项目正在绘制并添加到集合视图的位置。在这一点上,我有rootdelegate。对于每个项目我添加tapGesture。

let tap = UITapGestureRecognizer(target: self, action: #selector(viewTapped)) 

所以每个项目现在有里面敲击手势。现在在我看来,这是绘图我可以调用与单元被挖掘的rootview。

func viewTapped() { 
    tapDelegate?.milestoneTapped(passID) //tapDelegate = RootView 
} 

我希望这有助于。

+0

我希望可以使用UICollectionView委托方法而不是解决方法。如果我最终不能使用内置的功能,我会尝试这个 – vikzilla

相关问题