【问题标题】:Click on Disabled button on top of other button triggers the other button's click event单击其他按钮顶部的禁用按钮会触发其他按钮的单击事件
【发布时间】:2015-03-28 08:31:41
【问题描述】:

我在启用按钮的顶部有一个禁用按钮:

绿色按钮被禁用。当我点击它时,它会触发点击后面的蓝色按钮。

我试过了:

self.testButton.enabled = YES;
self.testButton.userInteractionEnabled = NO;

但我仍然有同样的行为

有什么办法可以防止这种情况下的蓝色按钮点击事件?

编辑:

通过不真正禁用按钮但将其目标更改为 nil 来修复:

        [myButton addTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
        [myButton setImage:[UIImage imageNamed:@"disabledImage.png"] forState:UIControlStateNormal];

【问题讨论】:

  • 你也可以禁用蓝色按钮吗?这可能是最简单的方法。
  • @trick14 不幸的是,我需要启用蓝色按钮,以便用户可以点击它。
  • 如果是这样,启用绿色按钮并将其目标设置为 nil。
  • userInteractionEnabled=FALSE; ?

标签: ios objective-c cocoa-touch uibutton


【解决方案1】:

是的,蓝色按钮将始终执行操作,因为绿色按钮未启用或难以处理。

因此,您需要在这两个按钮之间叠加一层以停止绿色按钮的点击事件。

下面的方法并不是解决这种情况的有效方法,但你可以使用它,除非你能找到更好的方法。

UIView(作为这两个视图之间的叠加层)中添加与绿色按钮相同大小的绿色按钮,将绿色按钮添加为此视图的子视图,并将此视图添加到绿色按钮的位置。

这样每当您禁用绿色按钮并点击它时。点击将打开UIView,这是一个绿色按钮的超级视图。

使用视图层次结构:

【讨论】:

  • 感谢您的解决方案。有用。我会看看我是否能找到更有效的解决方案。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2020-01-18
相关资源
最近更新 更多