2012-01-13 41 views
1

我正在編寫一個ap,當您按下按鈕時,該按鈕應被禁用0-10秒之間的隨機時間量,然後該按鈕變爲活動再次。但是,當按鈕被禁用時,如果用戶點擊,則點擊似乎只是排隊等待按鈕被啓用,並且點擊將被處理。我將如何禁用和不排隊用戶點擊?目標c按鈕禁用隊列用戶觸摸ups

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

回答

1

我假設你正在使用一個按鈕,從UIControl派生(UIButton?)。您可以利用其現有的enabled財產。將該屬性設置爲NO將忽略所有觸摸事件。有關UIControl的信息,請參閱this link

此外,我在您的示例中看到的另一個問題是您的sleep()函數。我不熟悉那個功能,但它可能阻塞主線程。要小心。相反,你應該使用NSTimer。每隔一段時間後,您可以這樣做:button.enabled = !button.enabled以獲得切換效果。

+0

感謝,我會嘗試NSTimer! – Denis 2012-01-13 05:09:59

2

可以取代睡眠()的FUNC

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

在使用此methood調用休眠功能

-(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)]; 
[email protected]"button is enabled!"; 
} 

-(BtnEnblMethood) 
{ 
button.alpha=1; 
button.enabled=YES; 
}