如何禁用 UIButton 和禁用 touchEvent 响应程序?

Posted

技术标签:

【中文标题】如何禁用 UIButton 和禁用 touchEvent 响应程序?【英文标题】:How to disable UIButton and disable touchEvent responder? 【发布时间】:2012-08-07 08:26:18 【问题描述】:

我有IBOutlet UIButton。启用时它不会响应touchesBegan:withEvent:。但是当我设置[button setEnabled:NO] 并单击以调整它的位置时,它会转到touchesBegan:withEvent:

如何禁用UIButton,以及禁用touchEvent responder? 我试过[button setEnabled:NO][button setUserInteractionEnabled:YES],但没有。

【问题讨论】:

userInteractionEnabled:YES ??? :O 【参考方案1】:

你试过了吗?

[button setEnabled:NO];

[button setUserInteractionEnabled:NO]

【讨论】:

【参考方案2】:

禁用 touchesBegan:withEvent 你可以使用

 self.view.userInteractionEnabled = NO; 

因为这个方法用于uiview(以及其他uiimage的子类)。当您单击按钮时,调用按钮处理程序(不是 touchesBegan、touchMove),按钮是 UIControl 的子类。

【讨论】:

我无法为主视图禁用 userInteraction。 你在哪个班级使用这个按钮?应用程序委托、自定义 uiview 或自定义 uiviewcontroller?尝试 self.superview.userInteractionEnabled = NO; (对于自定义 uiview - 这将是主视图)。对于应用委托,你可以试试这个:self.window.userInteractionEnabled = NO; 自定义uiviewcontroller,以及带图片的按钮【参考方案3】:

如果按钮被禁用。下面的代码对你有好处。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
   
    UITouch *touch = [touches anyObject];

    if(CGRectContainsPoint(button.frame, [touch locationInView:self.view]))
        return;

   //do stuff

【讨论】:

以上是关于如何禁用 UIButton 和禁用 touchEvent 响应程序?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式禁用 UIButton [重复]

如何删除禁用的 UIButton 的灰色外观

如何禁用标准 UIButton 触摸事件

如何在另一个类中禁用 uibutton 而无需导航到该类

如何禁用 UIButton 的高亮控制状态?

用户单击时如何禁用 UIButton 的突出显示