如果为两个单独的UIImageViews点击相同的位置,UITapGestureRecognizer无法正常工作

时间:2017-06-16 20:02:41

标签: ios swift uitapgesturerecognizer

我将UITapGestureRecognizer附加到两个不同的图像视图中,这些图像视图将在不同的时间占用相同的空间。目前我正在使用翻转过渡,当拍摄图像时,它会翻转到另一侧的图像,就像卡片翻转一样。我可以让第一张图像翻转得很好但是一旦翻转,第二张图像在点击时根本不响应。我使用print("tapped")来查看第二张图片是否获得了点按手势,但事实并非如此。这是我用来添加轻击手势的功能:

  func addTapGestures() {

    jokerImageView.isUserInteractionEnabled = true
    vendettaImageView.isUserInteractionEnabled = true

    let tap = UITapGestureRecognizer(target: self, action: #selector(flipView(_:)))
    jokerImageView.addGestureRecognizer(tap)
    vendettaImageView.addGestureRecognizer(tap)

  }

1 个答案:

答案 0 :(得分:0)

UITapGestureRecognizer是一个独特的对象。它一次只能添加到一个元素中。

因此,在您的代码中,您将其添加到jokerImageView,然后立即删除并将其添加到vendettaImageView

您需要创建UITapGestureRecognizer的2个实例,或者需要在使用"之后将其添加到jokervendetta,反之亦然。

编辑:您可以尝试以下操作,而不是创建第二个手势识别器:

func flipView(_ sender: Any) -> Void {

    // view flip code goes here

    // then
    if let g = sender as? UIGestureRecognizer {
        if g.view == vendettaImageView {
            jokerImageView.addGestureRecognizer(g)
        } else {
            vendettaImageView.addGestureRecognizer(g)
        }
    }
}