UIButtonのハイライトを持続する方法

UIButtonは標準動作ではタップするとハイライト(青くなる、もしくは画像を設定している場合は黒っぽくなる)した後に元の状態に戻る。

これをハイライトしたままにするには以下のように一瞬時間を置いて、ハイライトを設定し、enabledをオフにする。

- (IBAction)buttonTapped:(id)sender
{
    // senderはUIButtonとする
    [self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
 
- (void)highlightButton:(UIButton *)button
{
    button.highlighted = YES;
    button.enabled = NO;
}

もしくは

- (IBAction)buttonTapped:(id)sender
{
    UIButton *button = (UIButton *)sender;
    [[NSOperationQueue mainQueue] performSelector:@selector(addOperationWithBlock:)
                                       withObject:[[^{
                                           button.highlighted = YES;
                                           button.enabled = NO;
                                       } copy] autorelease]
                                       afterDelay:0.0];
}

この方法ではボタンのタッチには反応しなくなるのでトグル動作は出来ない。ハイライトを消してタッチに反応するようにするには、highlighted=NO/enabled=YESを設定する。

また、トグル動作が可能かUITapGestureRecognizerを設定してみたが、やはりenabledがNOの場合はジェスチャにも反応しないので、トグル動作にはならなかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です