【问题标题】:If child button is disabled then stop passing event to parent如果子按钮被禁用,则停止将事件传递给父按钮
【发布时间】:2015-03-23 09:36:55
【问题描述】:

我在UITableViewCell 上有一个UIButton 如果我设置了

button.enabled = false;

...然后对该按钮的后续点击触发点击UITableViewCell

如果按钮被禁用,那么如何确保点击它不会触发表格单元格点击?

【问题讨论】:

    标签: ios uiresponder


    【解决方案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 的回答)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多