2012-01-13 6 views
1

ボタンを押したときに0〜10秒の間に無作為にボタンを無効にしてからボタンをアクティブにする必要があります再び。しかし、ボタンが無効になっている間、ユーザーがクリックすると、クリックが待ち受けてすぐにボタンが有効になるのを待っているように見え、クリックが処理されます。どのように私は無効にし、ユーザーのクリックをエンキューしないだろうか?目的cボタンキューを無効にするユーザーのタッチアップ

-(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

2

あなたは(睡眠の代わりにこれを使用することができます)methoodでFUNC

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

-(BtnEnblMethood) 
{ 
button.alpha=1; 
button.enabled=YES; 
} 
関連する問題