web-dev-qa-db-ja.com

Swift 3-タップジェスチャーを使用した画像ビュー

画像ビューに配置したタップジェスチャーの使用に問題があります。画像は現在「ActionLiked」としてアセットに保存されており、画像ビューをこの画像に設定しました。次に、JSONに基づいて動的なテーブルビューにレンダリングされます(そのため、JSON配列に入力したアイテムごとに繰り返されます)。タップジェスチャーを追加して、クリックするたびに「TAPPED」を印刷しましたが、常に機能していないようです。現在、表にある7項目です。タップジェスチャーは1で機能し、次の2では機能しません。次に4番目のものに取り組み、そのパターンを繰り返します

項目1-作業項目2-作業項目なし3-作業項目なし4-作業項目5-作業項目なし6-作業項目なし7-作業

デバッグコンソールでエラーが発生するバンドルの識別子からバンドルのnibから参照されている ""画像を読み込めませんでしたが、画像はタップジェスチャーを認識しないだけで正しく表示されていますか?

5
Chad

次のコードは、Swift 4。

Tableviewセルの画像タップを検出したいと言ったように、このコードを実行してください:

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

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

以下のメソッドをViewControllerに追加します。

@objc func cellTappedMethod(_ sender:AnyObject){
     print("you tap image number: \(sender.view.tag)")
}
25
Maulik Pandya

isUserInteractionEnabledUIImageViewtrueであることを確認してください

9
Muhammad Raza

最近、あなたと同じような問題が発生しました。私はいくつかの画像を持っていて、ユーザーがそれらをタップしたときはいつでも同じように応答したいと思いました。実験を重ねた結果、各イメージには独自のUITapGestureRecognizerインスタンスが必要であることが明らかになりました。私は次のようなコードを使用することになり、すべての画像がタップされたときに応答することが保証されました。

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

すべてのUIImageViewに固有のジェスチャー認識機能を作成する必要があるという考えです。

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

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

しかし、私はあなたのコードを見なかったので、おそらくあなたはそれをループまたはそのようなもので作成するべきです。

0