ios - завершение транзакции вызывается несколько раз - PullRequest
0 голосов
/ 30 августа 2018

когда я использую завершение CATransaction для ожидания завершения анимации, оно вызывало завершение много раз. что он должен называться только один раз. вот пример кода

@objc func spinWheel(sender: UIPanGestureRecognizer) {
    CATransaction.begin()
    CATransaction.setCompletionBlock{ [weak self] in
        print("hello")
    }
    startRotation(angle: calculatePosition)
    CATransaction.commit()
}

так что после того, как я проведу UIView, он будет вращаться. и после окончания поворота я попытаюсь напечатать. и это напечатает это приблизительно 6-7 раз. который должен быть вызван только один раз

1 Ответ

0 голосов
/ 30 августа 2018

Я думаю, что ваш подход к этой анимации неправильный. Когда вы добавляете жест панорамирования к виду и панорамируете его. Он продолжает вызывать делегата, пока вы панорамируете.

Так что вам следует либо заменить UIPanGestureRecognizer на UISwipeGestureRecognizer, либо обработать завершение, когда закончится панорамирование.

...