2017-06-16 28 views
0

我將UITapGestureRecognizer附加到兩個不同的圖像視圖,這些圖像視圖將佔據相同的空間,但在不同的時間。目前我正在使用翻轉過渡,當輕拍一張圖像時,它會翻轉到另一側的圖像,如卡片翻轉過來。我可以將第一張圖片翻轉得很好,但是一旦翻過來,第二張圖片在被點擊時不會響應。我使用了print("tapped")來查看第二張圖片是否獲取了輕拍手勢,但事實並非如此。這是我用於添加輕敲姿勢的功能:UITapGestureRecognizer不能正常工作,如果點擊兩個單獨的UIImageView的相同位置

func addTapGestures() { 

    jokerImageView.isUserInteractionEnabled = true 
    vendettaImageView.isUserInteractionEnabled = true 

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

    } 

回答

0

UITapGestureRecognizer是不同的對象。它一次只能添加到一個元素。

因此,在您的代碼中,將其添加到jokerImageView,然後立即刪除並將其添加到vendettaImageView

您或者需要創建UITapGestureRecognizer的兩個實例,或者您需要將其添加到joker之後,vendetta已被「使用」,反之亦然。

編輯:而不是創建一個第二手勢識別器,你可以試試這個:

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) 
     } 
    } 
} 
+0

這是有道理的,我會添加另一點觸手勢識別 – SwiftyJD

+0

見我的答案編輯的另一種選擇。 – DonMag

相關問題