【问题标题】:UIControl Target Action event not flowing up the responder chainUIControl 目标操作事件未沿响应者链向上流动
【发布时间】:2013-10-01 13:53:19
【问题描述】:

我在UITableViewCell 中有一个UIButton,它保存在我的UITableViewController 子类拥有的表中。我正在尝试利用目标/动作对的功能,它可以将事件冒泡到下一个响应者,直到找到可以处理事件的响应者,但我没有让它工作。一些代码:

在我的表格单元格中,我这样设置按钮:

[self.button addTarget:nil action:@selector(doThing) forControlEvents:UIControlEventTouchUpInside];

按钮被添加到我的单元格中,并且单元格在表格视图中显示得很好。因为我已经为目标传递了nil,所以这个事件应该会冒泡,直到它到达我的View Controller,它实现了-doThing,但它没有被调用。

我已经在单元格子类和我的视图控制器子类中覆盖 - (BOOL)canBecomeFirstResponder 并返回 YES,但即使合并,它仍然不起作用。

我已经调试发现按钮和视图控制器都在同一个响应者链中,但不知何故,事件似乎没有弥补。

有什么想法吗?

【问题讨论】:

  • 您是否考虑过为表格视图可以设置的下一个响应者添加一个设置器,并且单元格可以在nextResponder 中返回?
  • @tapi 在这一点上,我还不如直接通过一个块或设置一个委托。
  • 同意,只是一个想法。这是iOS7下的吗?它的行为就像在 iOS6 上为我宣传的那样
  • 编辑:响应者链是正确的,但动作仍然没有冒泡
  • 第二次编辑:这适用于我在 iOS6 上,但不适用于 iOS7。它在选择器上使用和不使用 sender 参数都有效。是时候使用雷达了。

标签: ios uicontrol uiresponder responder-chain


【解决方案1】:

动作消息的选择器需要一个参数。尝试在您的 addTarget: 代码和视图控制器处理程序中调用它 doThing:

【讨论】:

  • 这就是解决方案。
【解决方案2】:

单元格说它的 nextResponder 是什么?你确定它不会冒泡到 UITableView 而不是 UITableViewController?

【讨论】:

  • 单元格的下一个响应者是一些私有的 Apple 视图类。表格视图在响应者链中。
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
相关资源
最近更新 更多