使用Swift中的UITapgestureRecognitor检查按下了哪个图像视图

使用Swift中的UITapgestureRecognitor检查按下了哪个图像视图,swift,uitapgesturerecognizer,Swift,Uitapgesturerecognizer,我有三个uitappesturerecognizers 它们看起来是这样的: gestureImageViewUp = UITapGestureRecognizer(target: self, action: #selector(ViewController.checkChoice(_:))) self.imageViewUp.addGestureRecognizer(gestureImageViewUp) gestureImageViewDown = UITapGestureRecogniz

我有三个
uitappesturerecognizers

它们看起来是这样的:

gestureImageViewUp = UITapGestureRecognizer(target: self, action: #selector(ViewController.checkChoice(_:)))
self.imageViewUp.addGestureRecognizer(gestureImageViewUp)

gestureImageViewDown = UITapGestureRecognizer(target: self, action: #selector(ViewController.checkChoice(_:)))
self.imageViewDown.addGestureRecognizer(gestureImageViewDown)

gestureImageViewMiddle = UITapGestureRecognizer(target: self, action: #selector(ViewController.checkChoice(_:)))
self.imageViewMiddle.addGestureRecognizer(gestureImageViewMiddle)

我想检查一下哪一个被按下了。如何解决此问题?

您不需要超过一个识别器,只需将其附加到视图,并在选择器中检查单击了哪个imageview

func onPress(_ guesture: UIGestureRecognizer) {

    guard let location = guesture.location(in: self.view)  else { return }

    if gestureImageViewUp.frame.contains(location) {
        // …
    }
    if gestureImageViewDown.frame.contains(location) {
        // …
    }
    if gestureImageViewMiddle.frame.contains(location) {
        // …
    }
}

未测试抱歉,如果您粘贴代码而不是快照,这会更容易。您不需要超过一个识别器,只需将其附加到视图,并在选择器中检查单击了哪个imageview

func onPress(_ guesture: UIGestureRecognizer) {

    guard let location = guesture.location(in: self.view)  else { return }

    if gestureImageViewUp.frame.contains(location) {
        // …
    }
    if gestureImageViewDown.frame.contains(location) {
        // …
    }
    if gestureImageViewMiddle.frame.contains(location) {
        // …
    }
}

未测试抱歉,如果粘贴代码而不是快照,会更容易

选择器上可以有3个不同的函数调用,或者,您可以在checkChoice方法上传递一个参数,以确定按下了哪一个。您可以提供一些工作代码吗?如果不想通过函数发送参数,请尝试调用3种不同的方法,这将是最快的测试。只需在视图中添加不同的标记,然后检查
手势.view.tag值
。顺便说一句,您只需要1个tapGestureRecognizer对象。将同一个添加到所有视图中感谢带有
标记的提示!在所有视图中添加1个手势识别器在swift中不起作用,但还是要感谢您!您可以在选择器上调用3个不同的函数,也可以在checkChoice方法上传递一个参数,以确定按下了哪一个。能否提供一些工作代码?如果不想知道如何通过函数发送参数,请尝试调用3个不同的方法,这将是最快的测试。只需在视图中添加不同的标记,然后检查
手势.view.tag值
。顺便说一句,您只需要1个tapGestureRecognizer对象。将同一个添加到所有视图中感谢带有
标记的提示!在所有视图中添加1个手势识别器在swift中不起作用,但还是要感谢您!