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.
}
使用 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.
}