UIView.animate с allowUserInteraction включает UIButton только в последнем кадре анимации - PullRequest
0 голосов
/ 17 мая 2018

Если я анимирую UIButton и использую опцию .allowUserInteraction, область последнего кадра в конце анимации может быть нажата, чтобы взаимодействовать с кнопкой, даже до того, как кнопка добралась до этого кадра.Нажатие, где кнопка видна, не запускает действие, если оно находится за пределами последнего кадра, который анимируется в направлении:

UIView.animate(withDuration: 9.0, delay: 0.0, options: [.curveLinear, .allowUserInteraction], animations: {
            self.theButton.frame = CGRect(x: (self.view.frame.width * 0.1), y: self.theButton.frame.origin.y, width: self.theButton.frame.width, height: self.theButton.frame.height)

        }, completion: nil)

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 17 мая 2018

Не имеет значения, что это UIButton. Является ли это кнопкой или изображением, единственный способ прикоснуться к ней, где она отображается во время анимации, - это использовать touchesBegan и проверить, содержит ли кадр layer.presentation объекта место касания:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first!
        let touchLocation = touch.location(in: self.view)

        let buttonFrame = theButton.layer.presentation()!.frame

        if buttonFrame.contains(touchLocation) {
            print("Tapped the button here!")
        }
    }
...