UITapGestureRecognizer не работает после изменения размера UIView - PullRequest
1 голос
/ 14 мая 2019

Я хочу программно переместить и увеличить размер UIView на кране, а затем, если снова нажать UIView, анимировать его обратно к исходному размеру и положению.

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

let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))

myView.heightAnchor.constraint(equalToConstant: 50).isActive = true
myView.widthAnchor.constraint(equalToConstant: 50).isActive  = true
myView.isUserInteractionEnabled = true
myView.addGestureRecognizer(tapRecognizer)

Ниже приведена моя функция, которая вызывается handleTap для выполнения начальной анимации при первом нажатии. Работает нормально. Я перевожу положение myView, а затем изменяю размер кадра, чтобы увеличить его.

fileprivate func expandView(_ sender: UITapGestureRecognizer) {
    UIView.animate(withDuration: 0.5, animations: {
        let translate = CGAffineTransform(translationX: 100, y: 50 )
        sender.view?.transform = translate
        sender.view?.backgroundColor = .green

    })  { (_) in

        UIView.animate(withDuration: 0.5, animations: {
            // change frame size of view to make it bigger
            sender.view?.frame = CGRect(x: 100, y: 50, width: 100, height: 100)
        })
    }

}

Я попытался закомментировать анимацию, которая изменяет размер кадра, оставляя только перевод XY. Это также не позволяет снова запускать handleTap при нажатии myView.

...