【问题标题】:Unrecognized selector sent to instance Swift 3无法识别的选择器发送到实例 Swift 3
【发布时间】:2016-10-14 04:55:06
【问题描述】:

我想用selector 实现TapGestureRecognizer,下面是我将tapGestureRecognizer 添加到我的imageView 的代码

let tapFirstGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(assignImage(_:)))
firstImageView.isUserInteractionEnabled = true
firstImageView.tag = 1
firstImageView.addGestureRecognizer(tapFirstGestureRecognizer)

这里是动作方法

func assignImage(_ sender: UIImageView){
    imagePicker.allowsEditing = false
    imagePicker.sourceType = .photoLibrary
    imageViewTag = sender.tag

    present(imagePicker, animated: true, completion: nil)
}

编译器一直在说

[UITapGestureRecognizer 标记]:无法识别的选择器发送到实例 0x6080001a7700'

【问题讨论】:

    标签: ios swift3 xcode8 uitapgesturerecognizer unrecognized-selector


    【解决方案1】:

    问题在于您的方法声明以及将tag 分配给UIGestureRecognizer 的对象。像这样更改您的方法声明。

    func assignImage(_ sender: UITapGestureRecognizer)
    

    或者

    func assignImage(_ sender: UIGestureRecognizer)
    

    编辑:UITapGestureRecognizer访问imageView对象。

    func assignImage(_ sender: UITapGestureRecognizer) {
        if let imageView = sender.view as? UIImageView {
    
        }
    }
    

    注意:你需要设置tag和你imageView而不是你UITapGestureRecognizer

    【讨论】:

    • 我想通过imageView作为参数来获取它的标签
    • 这不可能,但您可以使用 sender.view as? UIImageView 访问该 imageview 对象。
    • 好的,我现在试试
    • @aatalyk 请同时查看最新编辑的答案,
    • 好吧,它说要等几分钟)
    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多