UITapGestureRecognizer 不工作

Posted

技术标签:

【中文标题】UITapGestureRecognizer 不工作【英文标题】:UITapGestureRecogniser not working 【发布时间】:2016-10-11 10:15:52 【问题描述】:

我编写了与 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
    


【问题讨论】:

你在哪里添加了手势,你能显示那个代码 请尝试想出一个真正描述问题的问题标题。避免使用“紧急”之类的词,它们在这里不太受欢迎。 好吧抱歉这是我第一次 【参考方案1】:

检查一次你是否为你的Imageview启用了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 

【讨论】:

错误信息“预期声明 谢谢它的工作我这样做了:- 覆盖 func viewDidLoad() super.viewDidLoad() photoImageView.userInteractionEnabled = true @ShalinGadhavi - 很高兴听到 这也解决了我的教程问题,但我仍然很困惑为什么在调用 viewDidLoad() 时 userInteractionEnabled 的默认值为 false。我已经检查以启用故事板编辑器中图像视图的“启用用户交互”字段,并且运行时的值仍然是错误的......结果如果父视图(在这种情况下为堆叠视图)具有“用户已启用交互”设置为 false,它也适用于其子级:***.com/questions/5887305/…

以上是关于UITapGestureRecognizer 不工作的主要内容,如果未能解决你的问题,请参考以下文章

CGRect.offsetBy 不工​​作

重剑无锋,大巧不工

SQL 查询 Distinct / Group By 不工​​作

大巧不工-WEB前端设计修炼之道pdf

通过自定义策略级别不工作为组件提供对 sharepoint 的完全信任

《大巧不工-WEB前端设计修炼之道》