кнопка цели c отключение очередей пользователя - PullRequest
1 голос
/ 13 января 2012

Я пишу ap, для которого, когда вы нажимаете на кнопку, кнопка должна быть отключена на случайное количество времени между 0-10 секунд, и после этого кнопка снова становится активнойОднако, хотя кнопка отключена, если пользователь щелкает, кажется, что щелчок просто стоит в очереди, ожидая, когда кнопка будет включена, и щелчок будет обработан.как бы отключить, а не ставить в очередь клики пользователей?

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

Ответы [ 2 ]

2 голосов
/ 13 января 2012

вы можете использовать это вместо функции sleep () 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)];
progLabel.text=@"button is enabled!";
}

-(BtnEnblMethood)
{ 
button.alpha=1;
button.enabled=YES;
}
1 голос
/ 13 января 2012

Я предполагаю, что вы используете кнопку, полученную из UIControl (UIButton?).Вы можете воспользоваться существующим свойством enabled.Установка свойства NO будет игнорировать все сенсорные события.См. эту ссылку для получения информации о UIControl.

. Кроме того, еще одна проблема, которую я вижу в вашем примере, это ваша функция sleep().Я не знаком с этой функцией, но она может блокировать основной поток.Будь осторожен.Вместо этого вы должны использовать NSTimer .После каждого интервала вы можете сделать следующее: button.enabled = !button.enabled для эффекта переключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...