2016-09-04 4 views
-1

Событие жужжания не вызывается. Может быть, я делаю что-то неправильно, но, пожалуйста, посмотрите (я пробовал добавлять распознаватель в self.view, но до сих пор не повезло):UIImageView UITapGestureRecognizer не работает

LoginViewController

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) 
    } 
} 

MyViewController

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 ! ") 
    } 
}  
+0

См. Мой ответ. Но также вам нужно инициализировать свой ImageView, который я не вижу в вашем коде. – Andrei

ответ

0

Окей, так что я получил это работает так или иначе. Все, что мне нужно сделать, чтобы добавить контроллеры просмотра в моем LoginViewController так:

self.addChildViewController(myVC1) 

Вместо использования view.addSubview(container)

Примечание: Я не уверен, что это правильный способ сделать это, и, пожалуйста, комментарии если это не так. Тем временем он решает мою проблему.

1

Я предлагаю использовать 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 ! ") 
    } 


} 
+0

Я попытался добавить MyViewController.pressedSocialMediaItem, но все еще не работает. Что значит, мне нужно инициализировать мой ImageView. Разве это не инициализировано из моего утверждения let? – HelloimDarius