为什么UIButton永远不会隐藏,然后不加掩饰地回来?

时间:2014-07-20 22:35:35

标签: ios objective-c uibutton

所以self.pic是我要隐藏的UIButton。但它出于某种原因从未实际隐藏过它。

请帮助

- (void)tick:(NSTimer*)time
{
    self.pic.hidden = YES;
    [NSThread sleepForTimeInterval:1];
    self.pic.hidden = NO;

    [self.pic setEnabled:NO];
    if (self.checkPic == YES)
    {
        self.lives--;
        self.livesLabel.text = [NSString stringWithFormat:@"Lives : %d", self.lives];

    }
    [self.pic setImage:[self backgroundImageForGame] forState:UIControlStateNormal];
    [self check];

    self.pic.enabled = YES;
}

1 个答案:

答案 0 :(得分:0)

为了详细说明@rmaddy在评论中所说的内容,你不应该睡觉主要(或UI)线程。执行此操作时,您将阻止负责对按钮进行可视更改的线程,例如是否隐藏该按钮。解决方案是异步进行等待,GCD具有内置函数,使其无痛。

dispatch_after()允许您在选定的队列上创建将在指定延迟后执行的块。由于您要更新UI,因此您需要返回主队列以对屏幕上的按钮进行更改。这是一个例子:

self.pic.hidden = YES;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    self.pic.hidden = NO;
});