UITapGestureRecognizer 在 Swift 3.0 中不起作用

Posted

技术标签:

【中文标题】UITapGestureRecognizer 在 Swift 3.0 中不起作用【英文标题】:UITapGestureRecognizer not working in Swift 3.0 【发布时间】:2016-12-15 18:24:11 【问题描述】:

这可能看起来很简单,但我一直在扯头发一段时间,现在想知道为什么这不起作用。我试图在点击时更改图像,但它似乎根本无法识别点击。我已经在故事板上和以编程方式启用了用户交互,所以有点迷茫。

override func viewDidLoad() 
    super.viewDidLoad()

    tL.isUserInteractionEnabled = true

    x = UIImage(named: "Cross.jpg")
    reset = UIImage(named: "white.png")

    //Tap Gesture ------------------------------------------------------------

    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic))
    gestureRecognizer.numberOfTapsRequired = 1

    tL.addGestureRecognizer(gestureRecognizer)


func Logic(_ sender: UITapGestureRecognizer) 
    let tappedView = sender.view as! UIImageView
    tappedView.image = x
    print("Image Tapped")

【问题讨论】:

不要将Logic 函数嵌套在viewDidLoad 中。 已编辑。它实际上不在里面,由于不需要它,我删去了很多代码。还是不行。 UITapGestureRecoginzer 在 swift3 中运行良好。您的代码,如果 gestureRecognizer 在 vi​​ewDidLoad() 内部并且 func 逻辑在 viewDidLoad() 外部也应该可以正常工作。问题是另一回事。 “tL”是如何添加的?它是否被任何其他视图遮挡? @SwiftBeginner 你发现我有同样的问题吗, 【参考方案1】:

fun 逻辑需要 1 个参数,您应该在选择器中提供这样的参数。变化自

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic))

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(yourClassName.Logic(_ : )))

【讨论】:

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

在 UITapGestureRecognizer 上添加参数

在 UITapGestureRecognizer 中更改字体

使用 UITapGestureRecognizer 无法识别的选择器

带有点击事件的 UITapGestureRecognizer

UITapGestureRecognizer 和 touchesBegan 用于相同的视图

UIButton 上的 UITapGestureRecognizer