ビューに 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
、ボタンを設定した後TouchUpInside
でもハンドラーをトリガーすることです。ハンドラーでボタンが無効になっていることがわかりますが、ハンドラーはまだトリガーされています。
これを回避するにはいくつかの方法があることに注意してください-ハンドラーでbutton.enabledを確認する、以下の@sanchitsinghの回答など。私が知りたいのは、これが起こっている理由です。