带有 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

带有 UITapGestureRecognizer 的 UIView 顶部的 UIButton 不起作用

带有 UITapGestureRecognizer 的 UIView 通过拖动到它下面的 UITableView ?