Слой ячейки CollectionviewCell не будет вызывать didSelectItemAt - PullRequest
0 голосов
/ 22 января 2019

У меня есть коллекционное представление 3x3 с 9 ячейками, и я создаю анимационную функцию для перемещения слоя ячеек в случайную точку на виде.Я пытаюсь обнаружить жест касания, когда пользователь нажимает на определенную ячейку, но didSelectItemAt и touchesBegan не сработают.Есть ли способ определить, какая ячейка прослушивается?или я не должен переместить слой клеток с пути?Код выше моя функция анимации

var toX: CGFloat = 0.0
var toY: CGFloat = 0.0
let inset = (self.view.frame.width - collectionView.frame.width) / 2
let backView = collectionView
toX = CGFloat.random(in: inset...inset + collectionView.frame.width - view.frame.width)
toY = CGFloat.random(in: 0.0...collectionView.frame.height - view.frame.height)
let randomTo = CGPoint(x: toX, y: toY)
let control1 = randomControlPoint(x1: start, x2: randomTo)
let control2 = randomControlPoint(x1: start, x2: randomTo)
let path = createCurvePath(start: start, to: randomTo, control1: CGPoint(x: control1.x, y: control1.y), control2: CGPoint(x: control2.x, y: control2.y))
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = 1.0
self.view.layer.addSublayer(shapeLayer)

let moveAlongPath = CAKeyframeAnimation(keyPath: "position")
let curvePath = path
moveAlongPath.path = curvePath.cgPath
moveAlongPath.duration = 3
moveAlongPath.calculationMode = CAAnimationCalculationMode.paced
moveAlongPath.timingFunctions = [CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)]

CATransaction.begin()
CATransaction.setCompletionBlock({
    self.randomPointAnimation(start: randomTo, view: view, collectionView: backView)
})
let layer = createLayer(view: view)
layer.add(moveAlongPath, forKey: "animate along Path")
CATransaction.commit()
...