簡體   English   中英

iOS 9:Gesture Recognizer在storyboard / xib中設置,可添加到多個視圖中(不工作)

[英]iOS 9: Gesture Recognizer was setup in a storyboard/xib to be added to more than one view (not working)

使用iOS 9並面臨UITapGestureRecognizer的問題。 我有一個帶有UITableView的ViewController-A。 我添加了一個tableViewCell,它有一個textLabel。 我想在textLabel上實現點擊。 因此,如果我點擊textLabel - 它應該在控制台上打印或執行其他任何操作

問題: TapRecogniser無效。 得到以下錯誤:

在此輸入圖像描述

以下是我所做的:

1)在textLabel(From StoryBoard)上添加了一個“UITapGestureRecognizer”。 為textLabel啟用了用戶交互(即使是現在的錯誤)

2)以下是IBAction:

@IBAction func nameTap(sender: UITapGestureRecognizer) {
   print("a")
}

3)CellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! ThirdViewCell!
    cell.nameLabel?.text = "XYZ"

    let nameTapRecognizer = UITapGestureRecognizer(target: self, action: Selector("nameTap:"))
    nameTapRecognizer.cancelsTouchesInView = false
    cell.nameLabel?.addGestureRecognizer(nameTapRecognizer)
    return cell
}

PS: 1)這在iOS 8中工作。我檢查過..沒有重復項(整個文件中只有一個點擊識別器,並且它鏈接到textLabel)

2)我不想使用didSelectRowAtIndexPath方法,因為我需要為tableViewCell中的更多textLabel實現TapGestureRecognizer。

你看到錯誤控制台Label ,並且屬性為UserInteractionEnabled = NO; 看屏幕截圖

在此輸入圖像描述

試試這個

let nameTapRecognizer = UITapGestureRecognizer(target: self, action: Selector("nameTap:"))
nameTapRecognizer.cancelsTouchesInView = false
cell.nameLabel?.tag = indexPath.row // add this 
nameTapRecognizer.numberOfTapsRequired = 1 // add this 
nameTapRecognizer.delegate =self
cell.nameLabel?.userInteractionEnabled = true  // add this 
cell.nameLabel?.addGestureRecognizer(nameTapRecognizer)

// method
func nameTap(gesture: UITapGestureRecognizer) {
let indexPath = NSIndexPath(forRow: gesture.view!.tag, inSection: 0)
let cell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell

// Do whatever you want.
}

暫無
暫無

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

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