无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer
Posted
技术标签:
【中文标题】无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer【英文标题】:Tap Recognizer of CustomCell on UITableViewCell can't be click 【发布时间】:2016-04-21 10:08:10 【问题描述】:我在UITableViewCellController
上有一个笔尖作为自定义单元格。有一个带有识别器的 UIView。而且,我在cellForRowAtIndexPath
里面添加了笔尖,但是我不能点击笔尖上的UIView。
CustomButton.swift(我跳过了tapRecognizer
,因为在这里显示并不重要):
class CustomButton: UIView
var tappable = false
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(CustomButton.tapRecognizer))
self.addGestureRecognizer(tapGestureRecognizer)
这是笔尖的代码:
@IBOutlet weak var customButton: CustomButton!
override func awakeFromNib()
self.customButton.tappable = true
UITableViewCellController中的代码:
override func viewDidLoad()
// register nib
let nib = UINib(nibName: "CustomCell", bundle: nil)
self.tableView.registerNib(nib, forCellReuseIdentifier: "customNib")
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("customNib") as! CustomCell
return cell
当我尝试调试视图层次结构时,整个页面(包括按钮(橙色))都被 UITableViewCellContentView 覆盖。
我是否遗漏了代码中的某些内容?
【问题讨论】:
【参考方案1】:我想你忘了userInteractionEnabled
。启用用户交互以查看您想要处理的点击。
添加类似的东西
self.view.userInteractionEnabled = true
更新:
在单元格的内容视图上添加您的视图(按钮视图),而不是直接在单元格上。
希望这会有所帮助:)
【讨论】:
谢谢,但它也不起作用。我在上面添加了tappable
之类的东西来处理交互。当我尝试调试视图层次结构时,按钮被 UITableViewCellContentView 覆盖。
这意味着我必须更换我的笔尖?我必须从笔尖中取出 ButtonView 并应该在单元格上手动添加它?
我不这么认为。它应该工作。主要关注的是您的按钮应该在 contentview 上而不是在单元格上。层次结构应该是单元格内容视图按钮【参考方案2】:
首先在单元格的 nib 中添加一个视图,然后在该视图上添加按钮。直接在单元格笔尖上添加按钮将使其隐藏在内容视图后面。
【讨论】:
【参考方案3】:我应该使用 TableViewCell 而不是 View 创建一个 nib,它可以工作。非常感谢。 :)
【讨论】:
以上是关于无法点击 UITableViewCell 上 CustomCell 的 Tap Recognizer的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewCell 中无法点击 UIButton
点击时无法更改 UItableViewCell 中按钮的图像
无法调整包含 UIView 的 UITableViewCell