Swift UITapRecognizer 从 UITableView 窃取水龙头
Posted
技术标签:
【中文标题】Swift UITapRecognizer 从 UITableView 窃取水龙头【英文标题】:Swift UITapRecognizer steals the tap from an UITableView 【发布时间】:2019-07-26 01:21:55 【问题描述】:如果我使用 UITapGestureRecognizer,我的 UITableView 对象不会被点击,但识别器运行良好。
点击识别器初始化:
let tap = UITapGestureRecognizer(target: self, action: #selector(tapBackground))
menuBackground?.addGestureRecognizer(tap)
Windows 层次结构:
menuBackground?.addSubview(menuWindow!)
menuWindow?.addSubview(menuList!)
效果很好:
@objc func tapBackground(sender: UITapGestureRecognizer)
let tapLocation = sender.location(in: menuBackground)
if !menuWindow!.frame.contains(tapLocation)
closeMenu()
如果我不使用点击识别器,它工作得很好,但如果我使用它,这个函数什么都不做。为什么?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
print( indexPath.row )
【问题讨论】:
【参考方案1】:添加手势识别器委托,并且您应该在 cellForRowAt 中添加您的 UItapGestureRecognizer。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
return true
【讨论】:
我终于找到了解决方案。 tap.cancelsTouchesInView = false以上是关于Swift UITapRecognizer 从 UITableView 窃取水龙头的主要内容,如果未能解决你的问题,请参考以下文章
Swift 5:如何从 JSONDecoder().decode 获取数据?