title: iOS - Tap Gesture issue on image view
body: <p>I am slowly working my way through Apple's learn developing for Swift and I keep running into an issue with my tap gesture. I have re-created the project numbers times all with the same outcome.</p>
  
  <p>I add a tap gesture to an image view and this should open the photo library from my computer. Nothing happens.</p>
  
  <p>When I download and run the sample file from Apple everything works. When I copy and paste the code from Apple's to mine, again, nothing happens.  I have gone through everything that I can but feel that I am missing something.</p>
  
  <p>Here is my code. Apple's code is below:</p>
  
  <pre><code>import UIKit
  
  class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  
      // MARK: Properties
      @IBOutlet weak var nameTextField: UITextField!
      @IBOutlet weak var mealNameLabel: UILabel!
      @IBOutlet weak var photoImageView: UIImageView!
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          // handle the text fields user input through delegate callbacks
          nameTextField.delegate = self
  
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
      // MARK: UITextFieldDelegate
      func textFieldShouldReturn(textField: UITextField) -&gt; Bool {
         // Hide the Keyboard
          textField.resignFirstResponder()
          return true
  
      }
      func textFieldDidEndEditing(textField: UITextField) {
          mealNameLabel.text = textField.text
      }
  
      // MARK: UIImagePickerControllerDelegate
  
      func imagePickerControllerDidCancel(picker: UIImagePickerController) {
          // dismiss the picker if user cancels
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
          // The info dictionary contains multiple representations of the image, and this uses the original.
          let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage
  
          // Set the photoviewimage to be the selected image
          photoImageView.image = selectedImage
  
          // Dismiss the picker
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      // MARK: Actions
  
      @IBAction func selectImageFromPhotoLibrary(sender: UITapGestureRecognizer) {
          // Hide the Keyboard
          nameTextField.resignFirstResponder()
  
          // UIImagePickerController is a view controller that lets a user pick media from their photo library.
          let imagePickerController = UIImagePickerController()
  
          // Only Allow pictures to be selected and not taken
          imagePickerController.sourceType = .PhotoLibrary
  
          // make sure the viewcontroller is notified when the user selects an image
          imagePickerController.delegate = self
  
          presentViewController(imagePickerController, animated: true, completion: nil)
  
      }
  
      @IBAction func setDefaultLabelText(sender: UIButton) {
          mealNameLabel.text = "Default Text"
      }
  
  }
  </code></pre>
  
  <p>Here is Apple's code:</p>
  
  <pre><code>import UIKit
  
  class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
      // MARK: Properties
  
      @IBOutlet weak var nameTextField: UITextField!
      @IBOutlet weak var mealNameLabel: UILabel!
      @IBOutlet weak var photoImageView: UIImageView!
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          // Handle the text field’s user input through delegate callbacks.
          nameTextField.delegate = self
      }
  
      // MARK: UITextFieldDelegate
  
      func textFieldShouldReturn(textField: UITextField) -&gt; Bool {
          // Hide the keyboard.
          textField.resignFirstResponder()
         return true
      }
  
      func textFieldDidEndEditing(textField: UITextField) {
          mealNameLabel.text = textField.text
      }
  
      // MARK: UIImagePickerControllerDelegate
      func imagePickerControllerDidCancel(picker: UIImagePickerController) {
          // Dismiss the picker if the user canceled.
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
          // The info dictionary contains multiple representations of the image, and this uses the original.
          let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage
  
          // Set photoImageView to display the selected image.
          photoImageView.image = selectedImage
  
          // Dismiss the picker.
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      // MARK: Actions
      @IBAction func selectImageFromPhotoLibrary(sender: UITapGestureRecognizer) {
          // Hide the keyboard.
          nameTextField.resignFirstResponder()
  
          // UIImagePickerController is a view controller that lets a user pick media from their photo library.
          let imagePickerController = UIImagePickerController()
  
          // Only allow photos to be picked, not taken.
          imagePickerController.sourceType = .PhotoLibrary
  
          // Make sure ViewController is notified when the user picks an image.
          imagePickerController.delegate = self
  
          presentViewController(imagePickerController, animated: true, completion: nil)
      }
  
      @IBAction func setDefaultLabelText(sender: UIButton) {
          mealNameLabel.text = "Default Text"
      }
  
  }
  </code></pre>
  
  <p>Working Code from Anbu</p>
  
  <pre><code>import UIKit
  
  class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate  {
  
  
      // MARK: Properties
      @IBOutlet weak var nameTextField: UITextField!
      @IBOutlet weak var mealNameLabel: UILabel!
      @IBOutlet weak var photoImageView: UIImageView!
  
  
  
      override func viewDidLoad() {
          let tapgesture = UITapGestureRecognizer(target: self, action: Selector("imagepressed"))
          photoImageView.userInteractionEnabled = true
          photoImageView.addGestureRecognizer(tapgesture)
  
          super.viewDidLoad()
  
          // handle the text fields user input through delegate callbacks
          nameTextField.delegate = self
  
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
      // MARK: UITextFieldDelegate
      func textFieldShouldReturn(textField: UITextField) -&gt; Bool {
         // Hide the Keyboard
          textField.resignFirstResponder()
          return true
  
      }
      func textFieldDidEndEditing(textField: UITextField) {
          mealNameLabel.text = textField.text
      }
  
      // MARK: UIImagePickerControllerDelegate
  
      func imagePickerControllerDidCancel(picker: UIImagePickerController) {
          // dismiss the picker if user cancels
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
          // The info dictionary contains multiple representations of the image, and this uses the original.
          let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage
  
          // Set the photoviewimage to be the selected image
          photoImageView.image = selectedImage
  
          // Dismiss the picker
          dismissViewControllerAnimated(true, completion: nil)
      }
  
      // MARK: Actions
  
  
      func imagepressed () {
          nameTextField.resignFirstResponder()
  
          // UIImagePickerController is a view controller that lets a user pick media from their photo library.
          let imagePickerController = UIImagePickerController()
  
          // Only Allow pictures to be selected and not taken
          imagePickerController.sourceType = .PhotoLibrary
  
          // make sure the viewcontroller is notified when the user selects an image
          imagePickerController.delegate = self
  
          presentViewController(imagePickerController, animated: true, completion: nil)
      }
  
  
  
  /*    @IBAction func selectImageFromPhotoLibrary(sender: UITapGestureRecognizer) {
          let tapgesture = UITapGestureRecognizer(target: self, action: Selector("imagepressed"))
          photoImageView.userInteractionEnabled = true
          photoImageView.addGestureRecognizer(tapgesture)
  
          // Hide the Keyboard
          nameTextField.resignFirstResponder()
  
          // UIImagePickerController is a view controller that lets a user pick media from their photo library.
          let imagePickerController = UIImagePickerController()
  
          // Only Allow pictures to be selected and not taken
          imagePickerController.sourceType = .PhotoLibrary
  
          // make sure the viewcontroller is notified when the user selects an image
          imagePickerController.delegate = self
  
          presentViewController(imagePickerController, animated: true, completion: nil)
  
      }
     */
  
      @IBAction func setDefaultLabelText(sender: UIButton) {
          mealNameLabel.text = "Default Text"
      }
  
  }
  </code></pre>