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 获取数据?

如何在swift 3中从字典中获取数组

Swift:从 url 保存视频数据时出错

Swift - JSON 响应以 \u201c 开始,以 \u201d 结束 [关闭]

Swift - 调度队列和 U/I 串行运行

Swift UITesting 错误:文字中的转义序列无效。 \U201c