UITapGestureRecogniser не работает

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

import UIKit

class ViewController: UIViewController, UITextFieldDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        nameTextField.delegate = self
    }

    // MARK: Properties
    @IBOutlet weak var nameTextField: UITextField!
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var photoImageView: UIImageView!

    //MARK: Actions
    @IBAction func setDefaultLabelText(sender: UIButton) {
        nameLabel.text = "default"
    }
    @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 = UIImagePickerControllerSourceType.PhotoLibrary

            // Make sure ViewController is notified when the user picks an image.
            imagePickerController.delegate = self

            presentViewController(imagePickerController, animated: true, completion: nil)
    }

    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: UITextFieldDelegate
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }

    func textFieldDidEndEditing(textField: UITextField) {
        nameLabel.text = textField.text
    }

}

person Shalin Gadhavi    schedule 11.10.2016    source источник
comment
где вы добавили жест, можете ли вы показать этот код   -  person Anbu.Karthik    schedule 11.10.2016
comment
Пожалуйста, попробуйте придумать заголовок вопроса, который на самом деле описывает проблему. Избегайте таких слов, как «срочно», здесь их не очень хорошо принимают.   -  person Pekka    schedule 11.10.2016
comment
хорошо, извини, это мой первый раз   -  person Shalin Gadhavi    schedule 11.10.2016


Ответы (1)


проверьте один раз, включили ли вы свойство userInteraction для вашего изображения, по умолчанию это false, нам нужно включить вручную, сделайте как

photoImageView.userInteractionEnabled = true

для например

override func viewDidLoad(){
{
    super.viewDidLoad()

    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
    photoImageView.userInteractionEnabled = true
    photoImageView.addGestureRecognizer(tapGestureRecognizer)
}

вызовите свой метод как

func imageTapped(img: AnyObject)
{
    // Your action 
}
person Anbu.Karthik    schedule 11.10.2016
comment
Сообщение об ошибке ОЖИДАЕТСЯ Объявление - person Shalin Gadhavi; 11.10.2016
comment
СПАСИБО ЭТО РАБОТАЕТ Я сделал это: - - person Shalin Gadhavi; 11.10.2016
comment
переопределить функцию viewDidLoad () { super.viewDidLoad () photoImageView.userInteractionEnabled = true } - person Shalin Gadhavi; 11.10.2016
comment
@ShalinGadhavi - рад слышать - person Anbu.Karthik; 11.10.2016
comment
Это также решило мою проблему с учебником, но я все еще был смущен, почему значение по умолчанию для userInteractionEnabled равно false при вызове viewDidLoad(). Я проверил, чтобы включить поле «Взаимодействие с пользователем включено» в представлении изображения в редакторе раскадровки, и значение во время выполнения по-прежнему равно false... Оказывается, если родительское представление (в данном случае сложенное представление) имеет включенное взаимодействие с пользователем значение false, оно применяется и к его дочерним элементам: title="uiview взаимодействие с пользователем включено false для родителя, но true для дочернего"> stackoverflow.com/questions/5887305/ - person ThePartyTurtle; 02.12.2020