Ios UIImageView UIAPTgestureRecognitor不工作

Ios UIImageView UIAPTgestureRecognitor不工作,ios,swift,uiimageview,uitapgesturerecognizer,Ios,Swift,Uiimageview,Uitapgesturerecognizer,点击未调用GetInt的手势事件。我可能做错了什么,但请看一下(我尝试将识别器添加到self.view,但仍然没有成功): 登录查看控制器 class LoginViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let container = UIView() container.heightAnchor.cons

点击未调用GetInt的手势事件。我可能做错了什么,但请看一下(我尝试将识别器添加到self.view,但仍然没有成功):

登录查看控制器

class LoginViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let container = UIView() 

        container.heightAnchor.constraintEqualToConstant(50).active = true

        let myVC1 = MyViewController()
        let myVC2 = MyViewController()
        let myVC3 = MyViewController()
        let myVC4 = MyViewController()

        let myStackView = UIStackView(arrangedSubviews: [myVC1.view, myVC2.view, myVC3.view, myVC4.view])
        myStackView.spacing = 10
        myStackView.alignment = .Fill
        myStackView.distribution = .EqualSpacing

        container.addSubview(myStackView)
        view.addSubview(container)
    }
}
class MyViewController: UIViewController, UIGestureRecognizerDelegate {

    let ImageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()
        ImageView.backgroundColor = UIColor.blueColor()
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(pressedSocialMediaItem(_:)))
        tapGestureRecognizer.delegate = self
        tapGestureRecognizer.numberOfTapsRequired = 1

        ImageView.userInteractionEnabled = true
        ImageView.addGestureRecognizer(tapGestureRecognizer)

        view.addSubview(ImageView)
    }

    func pressedSocialMediaItem(sender : UITapGestureRecognizer) { 
        print("PRESSED ! ")
    }
}    
MyViewController

class LoginViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let container = UIView() 

        container.heightAnchor.constraintEqualToConstant(50).active = true

        let myVC1 = MyViewController()
        let myVC2 = MyViewController()
        let myVC3 = MyViewController()
        let myVC4 = MyViewController()

        let myStackView = UIStackView(arrangedSubviews: [myVC1.view, myVC2.view, myVC3.view, myVC4.view])
        myStackView.spacing = 10
        myStackView.alignment = .Fill
        myStackView.distribution = .EqualSpacing

        container.addSubview(myStackView)
        view.addSubview(container)
    }
}
class MyViewController: UIViewController, UIGestureRecognizerDelegate {

    let ImageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()
        ImageView.backgroundColor = UIColor.blueColor()
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(pressedSocialMediaItem(_:)))
        tapGestureRecognizer.delegate = self
        tapGestureRecognizer.numberOfTapsRequired = 1

        ImageView.userInteractionEnabled = true
        ImageView.addGestureRecognizer(tapGestureRecognizer)

        view.addSubview(ImageView)
    }

    func pressedSocialMediaItem(sender : UITapGestureRecognizer) { 
        print("PRESSED ! ")
    }
}    

我建议使用MyViewController.pressedSocialMediaItem,因此您的代码应该是这样工作的

 class MyViewController: UIViewController, UIGestureRecognizerDelegate {

        let ImageView = UIImageView()

        override func viewDidLoad() {
            super.viewDidLoad()
            ImageView.backgroundColor = UIColor.blueColor()
            let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(MyViewController.pressedSocialMediaItem(_:)))
            tapGestureRecognizer.delegate = self
            tapGestureRecognizer.numberOfTapsRequired = 1

            ImageView.userInteractionEnabled = true
            ImageView.addGestureRecognizer(tapGestureRecognizer)

            view.addSubview(ImageView)
        }

        func pressedSocialMediaItem(sender : UITapGestureRecognizer) { 
            print("PRESSED ! ")
        }
    } 
我已经在我的机器上测试了以下各项,并且可以正常工作:

import UIKit

class ViewController: UIViewController, UIGestureRecognizerDelegate {


    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        imageView.backgroundColor = UIColor.blueColor()
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.pressedSocialMediaItem(_:)))
        tapGestureRecognizer.delegate = self
        tapGestureRecognizer.numberOfTapsRequired = 1

        imageView.userInteractionEnabled = true
        imageView.addGestureRecognizer(tapGestureRecognizer)

        view.addSubview(imageView)
    }

    func pressedSocialMediaItem(sender : UITapGestureRecognizer) {
        print("PRESSED ! ")
    }


}

好吧,我总算让它工作起来了。我只需在LoginViewController中添加视图控制器,如下所示:

self.addChildViewController(myVC1)
而不是使用
view.addSubview(容器)


注意:我不确定这样做是否正确,如果不正确,请发表评论。同时它解决了我的问题。

请看我的答案。但您还需要初始化代码中看不到的imageView。我尝试添加MyViewController.pressedSocialMediaItem,但仍然无法工作。我需要初始化imageView是什么意思。它不是从我的let语句初始化的吗?