Swift UITapRecognizer窃取了UITableView的水龙头

时间:2019-07-26 01:21:55

标签: swift uitableview uitapgesturerecognizer

如果我使用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 个答案:

答案 0 :(得分:1)

添加手势识别器委托,并且,您还应该在cellForRowAt中添加UItapGestureRecognizer。

 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}