簡體   English   中英

從點擊手勢識別器獲取標簽

[英]Getting Tag from Tap Gesture Recognizer

我有一組 UIImageViews 並以編程方式為它們分配了點擊手勢識別器。

    myImages.forEach{ UIImageView in
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
        tap.numberOfTapsRequired = 1
        tap.delegate = self
        view.addGestureRecognizer(tap)
        }

將發件人分配給每個人的最佳方法是什么(或確定以另一種方式點擊哪個圖像)? 我試過不成功

var tag = sender.view!.tag

謝謝!

在這里你需要遵循兩個步驟,

第1步

在附加到 myImages 數組之前為 imageview 分配tags

第2步

從 imageview 數組中獲取標簽並分配給您的每個手勢

myImages.forEach{  
    let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
        tap.numberOfTapsRequired = 1
        tap.view?.tag =  $0.tag
        $0.isUserInteractionEnabled = true
        $0.addGestureRecognizer(tap)
    }

並像處理函數一樣

  @objc func handleTap(_ sender: UITapGestureRecognizer) {
     guard let getTag = sender.view?.tag else { return }
    print("getTag == \(getTag)")
}

您可以使用 UITapGestureRecognizer init 提供的塊來就地訪問您的圖像。

myImages.forEach { image in
let tap = UITapGestureRecognizer(block: {[weak self] _ in
       //Do your stuff here
       //print("Image Tapped:", image.debugDescription)
}, delegate: self)
tap.numberOfTapsRequired = 1
image.addGestureRecognizer(tap)
}

如果你想在UICollectionView 或 UITableView 單元格中設置UITapGestureRecognizer那么下面的解決方案對我們很有用。

步驟1將UITapGestureRecognizer 分配給UICollectionView 或UITableView 單元格中的particuller textview 或其他視圖。

cell.textView?.delegate = self
cell.textView?.isEditable = false
cell.textView?.isSelectable = true
let tap = UITapGestureRecognizer(target: self, action:#selector(self.onclickLink(_:)))
cell.textView?.tag = indexPath.row
tap.numberOfTapsRequired = 1
cell.textView?.addGestureRecognizer(tap)

步驟 2在 onclick 操作中從 UITextView 或其他 View 獲取標簽。

    @IBAction func onclickLink(_ sender: UITapGestureRecognizer) {
        print("indexPathRow == \(sender.view?.tag ?? 0)")            
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM