我在视图中有一个 UIButton。我像这样附加一个事件处理程序:
[self.button addTarget:self
action:@selector(button_touchUpInside:)
forControlEvents:UIControlEventTouchUpInside];
处理程序如下所示:
-(void) button_touchUpInside:(id)sender
{
NSLog(@"%@", ((UIButton *)sender).enabled ? @"ENABLED" : @"DISABLED"); // Logs DISABLED
// Do stuff
}
我禁用这样的按钮:
-(void)setEnabled:(BOOL)enabled
{
enabled_ = enabled;
self.button.enabled = enabled;
}
我的问题是,即使我enabled = NO
在按钮上设置了 aTouchUpInside
仍然会触发处理程序。我可以在处理程序中看到该按钮被禁用,但是处理程序仍然被触发。
请注意,有几种方法可以解决这个问题 - 检查处理程序中的 button.enabled,@sanchitsingh 在下面的答案等。我想知道为什么会发生这种情况。