我正在写一个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;
}
我假设您使用的按钮源自UIControl
(UIButton
?)。您可以利用其现有的enabled
属性。将属性设置为NO
将忽略所有触摸事件。有关UIControl
的信息,请参阅此链接。
另外,我在您的示例中看到的另一个问题是sleep()
函数。我不熟悉这个函数,但它可能会阻塞主线程。要谨慎。相反,您应该使用NSTimer。在每个间隔之后,可以执行以下操作:button.enabled = !button.enabled
以获得切换效果。