如果子按钮被禁用,则停止将事件传递给父按钮
Posted
技术标签:
【中文标题】如果子按钮被禁用,则停止将事件传递给父按钮【英文标题】:If child button is disabled then stop passing event to parent 【发布时间】:2015-03-23 09:36:55 【问题描述】:我在UITableViewCell
上有一个UIButton
如果我设置了
button.enabled = false;
...然后对该按钮的后续点击触发点击UITableViewCell
。
如果按钮被禁用,那么如何确保点击它不会触发表格单元格点击?
【问题讨论】:
【参考方案1】:你可以这样做
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(!cell.btn.enable)
return;
【讨论】:
表格单元格应保持可点击状态。如果单元格上的按钮启用,则调用已售出的操作,如果禁用,则不会发生任何事情。如果用户单击单元格上的其他任何位置,则应该调用正常的选择委托 就像我说的 - 这将在不同的层面上处理事件【参考方案2】:一种方法是不禁用按钮,而只是认识到相关按钮目前不会响应触摸事件并且什么都不做 在此按钮的处理程序中。
if( buttonIsActive )
// trigger whatever the button was intended to trigger
为此,您需要继承 UIButton 并添加属性 buttonIsActive。
如果你不那样做,我想你将不得不在不同的层次上处理那个事件(比如在 UITableViewCell 的处理程序中)或者完全转向手势识别(也就是选择)(参见 Praful Kadam 的回答)。
【讨论】:
以上是关于如果子按钮被禁用,则停止将事件传递给父按钮的主要内容,如果未能解决你的问题,请参考以下文章
在ReactJS中使用迭代时如何将onClick事件传递给父组件?