背景:私はカレンダーを作成しており、そのためにUITableViewとUICollectionViewsを組み合わせています。 UITableViewは月のセルを保持しています。毎月UITableViewCellは、UICollectionViewCell日でUICollectionViewを保持しています。Swift UITableViewCellサブビューはタップを登録しません
問題: UICollectionViewCellsはクリックできません。 私は月UITableViewCellでself.bringSubviewToFront(self.collectionView)を呼び出すことでこれを解決できます。しかしこれにより、collectionViewがトップビューになっているため、UITableViewがスクロールしなくなります。
したがって、UITableViewをスクロールできるようにするか、UICollectionViewをクリックするかを選択できます。
私が試したこと:私はクリックが発生する前にそれをキャプチャして、コレクションビューを前面に持ってきて再度戻しました。ではないが、良い解決策:
//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をスクロール可能にする方法はありますか?
テーブルビューとコレクションビューの両方のスクロールの方向は? –
もちろん! self.collectionView.scrollEnabled = false解決しました、あなたを思い出してください! – rilar