如果我使用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 )
}
答案 0 :(得分:1)
添加手势识别器委托,并且,您还应该在cellForRowAt中添加UItapGestureRecognizer。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}