ios - 单击其他按钮顶部的“禁用”按钮会触发另一个按钮的单击事件

标签 ios objective-c cocoa-touch uibutton

我在启用按钮之上有一个禁用按钮:

Disabled button

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

我尝试过:

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

但我仍然有同样的行为

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

编辑:

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

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

最佳答案

是的,蓝色按钮总是会得到一个 Action ,因为绿色按钮未启用或难以处理。

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

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

UIView 中添加绿色按钮(作为这两个 View 之间的叠加),其大小与绿色按钮相同,添加绿色按钮作为该 View 的 subview ,并在以下位置添加该 View 绿色按钮。

这样,每当您禁用绿色按钮并点击它时。点击将在 UIView 上,它是绿色按钮的 super View 。

使用 View 层次结构:

enter image description here

关于ios - 单击其他按钮顶部的“禁用”按钮会触发另一个按钮的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209234/

相关文章:

ios - 如何使用 RGB 数据创建 CGImage?

objective-c - UITableView 数据源问题。当 UITableView :cellForRowAtIndexPath: is called 时,我的数据数组突然为空

android - Adobe Air 在 iOS 上可以正常运行吗?

ios - Angular Service Worker 不适用于 iOS 独立模式

objective-c - 更改 NSDictionary 中的键名

objective-c - NSFetchedResultsController,后台线程中的多线程和删除

cocoa-touch - 自动布局和 iOS7,以编程方式添加的 UIImageView 不会出现 - 似乎与线程相关

iphone - 如何从 iPhone 直播视频

ios - 当键盘可见时 UIScrollView 滚动到按钮

ios - 在纵向和横向中使用 AutoLayout