UITapGestureRecognizer不适用于UIView动画

时间:2017-12-27 20:24:10

标签: ios swift animation uiview uitapgesturerecognizer

我在动画时点击UIImage时尝试调用动作。 我见过类似的问题,但我不能将这些解决方案应用到我的案例中。 请帮忙。

xcode 9.2 swift 4

import UIKit

class MyCalssViewController: UIViewController {

    @IBOutlet weak var myImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // action by tap
        let gestureSwift2AndHigher = UITapGestureRecognizer(target: self, action:  #selector (self.actionUITapGestureRecognizer))
        myImageView.addGestureRecognizer(gestureSwift2AndHigher)

    }

    // action by tap
    @objc func actionUITapGestureRecognizer (){

        print("actionUITapGestureRecognizer - works!") // !!! THIS DOES NOT WORK !!!

    }

    // hide UIImage before appear
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        myImageView.center.y += view.bounds.height

    }

    // show UIImage after appear with animation
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        UIView.animate(withDuration: 10, animations: {
            self.myImageView.center.y -= self.view.bounds.height
        })
    }
}

3 个答案:

答案 0 :(得分:0)

您错过了一条线,在视图上启用了用户互动。

override func viewDidLoad() {
    super.viewDidLoad()

    // action by tap
    let gestureSwift2AndHigher = UITapGestureRecognizer(target: self, action:  #selector (self.actionUITapGestureRecognizer))
    myImageView.isUserInteractionEnabled = true
    myImageView.addGestureRecognizer(gestureSwift2AndHigher)

}

答案 1 :(得分:0)

  let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.clickedImageView(_:)))
  myImageview.isUserInteractionEnabled = true
  myImageview.addGestureRecognizer(tapGesture)

// MARK: - Gesture Recognizer action

    func clickedImageView(_ sender: UITapGestureRecognizer) {
       // Write your action here.
    }

答案 2 :(得分:0)

您需要像这样传递选项.allowUserInteraction

UIView.animate(withDuration: 10, delay: 0, options: .allowUserInteraction, animations: {
    ...
})