2017-02-10 28 views
1

Im使用我已經放在圖像視圖上的輕擊手勢的問題。該圖像當前作爲「ActionLiked」存儲在資產中,並且已將圖像視圖設置爲該圖像。然後將其呈現爲基於JSON動態的表格視圖(因此,對於放入JSON數組中的每個項目都重複)。我添加了輕擊手勢,每次點擊它時都會打印出「TAPPED」,但它似乎並不是一直在工作 - 當前有7個項目在表格中,輕擊手勢將在1上工作,然後在接下來的2然後在第四一個工作,並且重複圖案Swift 3 - 使用Tap Gesture的圖像視圖

項目1 - WORK ITEM 2 - NO WORK 第3項 - NO WORK 第4項 - WORK 第5項 - NO WORK 第6項 - NO WORK 第7項 - WORK

我的調試控制檯中出現錯誤 無法從標識爲 的包中加載引用nib的圖像但是圖像在每個人身上正確顯示只是不識別輕擊手勢?

+0

請,向我們展示了一些代碼... –

回答

10

下面的代碼可以幫助你更與SWIFT 3

正如你說你要來檢測的tableview細胞圖像自來水請到通過這個代碼:

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.connected(_:))) 

    cell.yourImageView.isUserInteractionEnabled = true 
    cell.yourImageView.tag = indexPath.row 
    cell.yourImageView.addGestureRecognizer(tapGestureRecognizer) 

並將以下方法添加到您的ViewController中

func connected(_ sender:AnyObject){ 
    print("you tap image number : \(sender.view.tag)") 
} 
+0

所以,當我嘗試這方面,我每次得到一個未捕獲的異常我按手勢 '讓tapGesture = UITapGestureRecognizer(目標:自我,動作:#selector(NewsFeedVC.likePost (_ :))) self.actionLike.isUserInteractionEnabled =真 self.actionLike.addGestureRecognizer(tapGesture)' 'FUNC likePost(_發件人:UITapGestureRecognizer){ 打印( 「螺紋」) }' 由於未捕獲異常'NSInvalidArgumentException'而終止應用程序,原因:'-PostCell likePost:]:無法識別的選擇器發送t o實例0x7fbc3e894a00' – Chad

+0

@Chad正如你所說你需要使用tableview來代替使用self.actionLike來進行表視圖,使用cell.actionLike並確定它們是很好的,你需要根據單元格索引分配標籤在tableview中。並確保啓用細胞圖像的用戶界面。 –

0

我最近有一個似乎與你相似的問題。我有很多圖片,當用戶點擊它們時,我都希望以同樣的方式迴應。經過一番嘗試,我清楚地看到每個圖像都必須有自己的UITapGestureRecognizer實例。最後我用這樣的代碼,這確保了每一個形象迴應被竊聽:

for imageView in imageViews { 
    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapResponse)) 
    imageView.addGestureRecognizer(tapGestureRecognizer) 
    imageView.isUserInteractionEnabled = true 
} 
0

的想法是,你應該爲每一個的UIImageView創建獨特的手勢識別。

let gestureRecognizerOne = UITapGestureRecognizer(target: self, action: #selector(tap)) 
firstImageView.addGestureRecognizer(gestureRecognizerOne) 

let gestureRecognizerTwo = UITapGestureRecognizer(target: self, action: #selector(tap)) 
secondImageView.addGestureRecognizer(gestureRecognizerTwo) 

但我沒有看到你的代碼,所以,也許你應該在一個循環或類似的東西創建它。

4

請檢查UIImageViewisUserInteractionEnabledtrue