带有 UITapGestureRecognizer 的 UIView 上的 UITableView(单元格选择不起作用)
Posted
技术标签:
【中文标题】带有 UITapGestureRecognizer 的 UIView 上的 UITableView(单元格选择不起作用)【英文标题】:UITableView on a UIView with UITapGestureRecognizer (cell selection doesn't work) 【发布时间】:2013-07-16 18:13:10 【问题描述】:在具有 UITapGestureRecognizer 的 UIView 上使用 UITableView 时遇到一些问题。 如果我单击 UITableViewCell,则背景不会更改为所选的(因为没有收到触摸)。
我的假设是,如果您将子视图添加到父视图,子视图将能够处理触摸并且一切仍然有效。然而,事实并非如此。如果我点击 UITableviewCell,点击由这个父视图处理,并且单元格未被选中。
我已经尝试子类化“UITapGestureRecognizer”以忽略来自 UITableViewCell 的触摸事件: (单点触控代码)
public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
if (touch.View.GetType () == typeof(UITableViewCell))
return false;
return true;
因为我点击了一个单元格,所以它不起作用,“touch.View.GetType ()”返回“UIView”并且它被忽略了。
知道如何使用 UITapGestureRecognizer 使我的 tableview 在 UIView 上工作吗?
如果我从父视图中删除“UITapGestureRecognizer”,tableview 会正常运行。
谢谢马特
【问题讨论】:
您想在点击时更改所选单元格的背景更改..? 是的,但我知道如何更改选定单元格的背景。问题是,当我使用 UITapGestureRecognizer 在视图上添加表时,单元格不会被“选中”,因为点击是由父视图处理的 【参考方案1】:创建 UITapGestureRecogizer 时,将 setCancelsTouchesInView 属性设置为 NO。这应该允许您的 UITableViewCell 接收触摸。
【讨论】:
哇,刚刚查找了“setCancelsTouchesInView”,我仍然不知道它到底做了什么,但它确实解决了我的问题。快速简单 :-) 谢谢!以上是关于带有 UITapGestureRecognizer 的 UIView 上的 UITableView(单元格选择不起作用)的主要内容,如果未能解决你的问题,请参考以下文章
iOS 使用带有 UILabel 的 UITapGestureRecognizer 滑动到下一页
ios - 带有 UITextView 的 UITapGestureRecognizer
带有 UITapGestureRecognizer 的 UIView 上的 UITableView(单元格选择不起作用)
带有可折叠侧边栏菜单 Swift 的 UITapGestureRecognizer