背景:我制作日历,为此我将UITableView和UICollectionViews结合起来。 UITableView持有月份单元格。每个月UITableViewCell都会持有一个UICollectionView,其中包含UICollectionViewCell天。
问题: UICollectionViewCells无法点击。 我可以通过在月UITableViewCell中调用self.bringSubviewToFront(self.collectionView)来解决这个问题。但是这会使UITableView无法滚动,因为collectionView现在是顶视图。
因此,我可以选择能够滚动UITableView还是能够单击UICollectionView。
我尝试了什么:我尝试在发生之前捕获点击并将collectionView置于前面,然后再将其重新放回。虽然不是一个好的解决方案:
//In UITableViewCell class
//UIGestureRecognizerDelegate
//Bring collectionView to front before tap
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
self.bringSubviewToFront(self.collectionView)
return true
}
//UIScrollViewDelegate
//Bring collectionView to back again
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
self.sendSubviewToBack(self.collectionView)
//Do stuff
}
问题:如何才能实现滚动并让UICollectionView可点击而无需在点击之间返回和转发视图?有没有办法让UICollectionView在前面并仍然使UITableView可滚动?
答案 0 :(得分:1)
具有相同滚动指示的嵌套UIScrollView违反了Apple的人机界面指南,您的应用甚至可能会被拒绝,因此请尝试禁用UICollectionView的滚动。
希望这有帮助。