目标c按钮禁用队列用户润色



我正在写一个ap,当你按下按钮时,该按钮应该在0-10秒之间的随机时间内被禁用,之后,该按钮将再次激活。然而,当按钮被禁用时,如果用户点击,点击似乎只是在排队等待按钮被启用,点击将被处理。如何禁用和不将用户单击排入队列?

-(void)buttonPressed{
    NSLog(@"Button pressed!");
    button.userInteractionEnabled=false;
    sleep(rand()%10);
    progLabel.text=@"button is enabled!";
    button.userInteractionEnabled = true;
}

您可以使用它来代替sleep()函数

[self performSelector:@selector(sleepMethood) withObject:nil afterDelay:0.5];

在调用睡眠函数的方法中

-(void) sleepMethood
{
sleep(rand()%10);
}

或者另一种解决方法是

-(void)buttonPressed{
NSLog(@"Button pressed!");
button.alpha=0.7;
button.enabled=NO;
[self performSelector:@selector(BtnEnblMethood) withObject:nil afterDelay:(rand()%10)];
progLabel.text=@"button is enabled!";
}
-(BtnEnblMethood)
{ 
button.alpha=1;
button.enabled=YES;
}

我假设您使用的按钮源自UIControlUIButton?)。您可以利用其现有的enabled属性。将属性设置为NO将忽略所有触摸事件。有关UIControl的信息,请参阅此链接。

另外,我在您的示例中看到的另一个问题是sleep()函数。我不熟悉这个函数,但它可能会阻塞主线程。要谨慎。相反,您应该使用NSTimer。在每个间隔之后,可以执行以下操作:button.enabled = !button.enabled以获得切换效果。

最新更新