【问题标题】:How to stop the View Controller to get the touch of a tableView cell's subview?如何停止视图控制器以触摸 tableView 单元格的子视图?
【发布时间】:2013-06-26 10:38:41
【问题描述】:

我的 ViewController 中有一个 TableView。 在选中状态下,其单元格的子视图会增加宽度并超出其边界。

当我点击这个子视图时,触摸将转到视图控制器的 touchesBegan 实现,该实现正在使用取消选择单元格。

现在这个子视图没有被剪裁并被允许出去,所以理想情况下,落在它上面的触摸应该去它,但为什么它们要去具有 tableview 的 ViewController ? p>

  • TableView 位于 iPad 屏幕(视图控制器)的左侧,作为 边栏。
  • 选中的单元格像抽屉一样出来,如下所示。
  • 点击屏幕上的任何其他地方,抽屉(选定的单元格) 回去。

问题是所选单元格中的区域超出了表格视图的范围, 如果单击,则对 ViewController 中的 touchesBegan 方法进行触摸。

因此它最终会返回。

=================================================
======                                           =
======                                           =
======                                           =
=============                                    =
=============                                    =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
==================================================

【问题讨论】:

    标签: ios objective-c uitableview


    【解决方案1】:

    是的,这会发生,因为更新的单元格现在超出了 tableview 的宽度,所以现在显然触摸会转到 tableview 的超级视图。如果您想禁止该触摸,则还需要增加 tableview 的宽度,因此单元格视图将位于 table 下方,然后您将收到 tableview 上的触摸。

    实际上 UIView 有一个名为“clipsToBounds”的属性,默认情况下它的值为“No”,因此这不会剪切 UIView 之外的区域,这就是为什么您看到单元格视图但没有得到触摸的原因这将适用于所有类型的视图。

    希望对你有帮助:)

    【讨论】:

    • 我做到了。但是现在,tableView 正在触摸,即使它不应该这样做。我希望将这种触摸传递给 ViewController。
    • 如果您不想触及 UItableview 并且只想增加单元格视图和其他视图,那么您需要创建自己的自定义视图并在 UIScrollView 上进行管理。这是唯一剩下的解决方案。
    • 所以我确实增加了 tableView 的宽度。然后将 tableview 子类化以覆盖 hitTest。现在我检查是否有任何单元格子视图想要触摸。如果他们都不想接触,那么我返回 nil,这让 tableview 的下一个响应者来处理它,结果是 ViewController。问题解决了!
    • 太棒了:),谢谢你的解释。
    【解决方案2】:

    我认为与其采用视图控制器,不如尝试为表格视图创建自定义视图,另一个是您的视图,它将像抽屉一样显示。为 tableview 创建自定义委托。应用了动画的功能,如推送和弹出视图控制器。我认为这可以很好地帮助你。将 tableviewcell 选择样式属性设置为无。

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 1970-01-01
      • 2020-01-01
      • 2013-05-08
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多