保持iPhone UIButton突出显示

时间:2010-02-18 17:02:56

标签: iphone uibutton

我有以下代码段:

@interface Foo: UIViewController {
  ...
  UIButton *myButton;
  ...
}

@implementation Foo

- (void) viewDidLoad {
  ...
  myButton.highlighted = YES;
  ...
}

当我运行应用程序时,该按钮以蓝色突出显示(默认行为)。它按我的预期工作。

但按下按钮一次后,该按钮不再突出显示。

然后,我创建了一个IBAction highlightButton来处理Touch Up Inside事件,我明确地调用myButton.highlighted = Yes;。不幸的是,按钮突出显示仍然没有停留。

即使按下后,如何将其突出显示为蓝色?

3 个答案:

答案 0 :(得分:45)

解决方案是在下一个runloop中执行[button setHighlighted:YES]

- (void)highlightButton:(UIButton *)b { 
    [b setHighlighted:YES];
}

 - (IBAction)onTouchup:(UIButton *)sender {
    [self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}

答案 1 :(得分:13)

最简单的代码就在这里。

dispatch_async(dispatch_get_main_queue(), ^{
    [button setHighlighted:YES];
});

答案 2 :(得分:7)

另一种运行方法是将块发送到主操作队列:

-(void)onTouchup:(UIButton*) button
{
    [NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}