iOS 9:手势识别器已在 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 的问题。我有一个 ViewController-A 和一个 UITableView。我添加了一个带有 textLabel 的 tableViewCell。我想在 textLabel 上实现点击。因此,如果我点击 textLabel——它应该在控制台上打印或执行任何其他操作

问题: TapRecogniser 不工作。出现以下错误:

以下是我所做的:

1) 在 textLabel(来自 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
}

P.S: 1) 这在 iOS 8 中有效。我检查过..没有重复项(整个文件中只有一个点击识别器及其链接到文本标签)

2) 我不想使用 didSelectRowAtIndexPath 方法,因为我需要为 tableViewCell 中的更多文本标签实现 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.
}