Как я могу отключить нажатие кнопки при отображении графического изображения в течение 5 секунд?

#objective-c #cocoa-touch

#objective-c #cocoa-touch

Вопрос:

Как я могу отключить нажатие UIButton… пока я показываю графику в течение 5 секунд?

     self.view.userInteractionEnabled = NO; // if you need the whole view  disabled
    //self.btn.enabled = NO; //if you need button only disabled

    [UIView animateWithDuration:3.0f animations:^ 
        {
            // your graphical changes
            [(UILabel*)addLbl[1] setBackgroundColor:[UIColor redColor]];
        } 
    completion:^ (BOOL finished) 
        {

            self.view.userInteractionEnabled = YES;
            //self.button.enabled = YES;
            [(UILabel*)addLbl[1] setBackgroundColor:[UIColor whiteColor]];
        }
    ];
  

Ответ №1:

Вы можете использовать метод задержки:

 //make your animations and graphical changes..
//....

self.myButton.enabled = NO;
[self performSelector:@selector(changeButton) withObject:nil afterDelay:5.0]; //this will happen after 5 seconds

-(void)changeButton {
self.myButton.enabled = YES; 
}
  

Ответ №2:

// ОТРЕДАКТИРОВАНО. Попробуйте это вместо

 self.view.userInteractionEnabled = NO; // if you need the whole view  disabled

[UIView animateWithDuration:3.0f animations:^ {
  [(UILabel*)addLbl[1] setBackgroundColor:[UIColor redColor]];
} completion:^ (BOOL finished) {
 [UIView animateWithDuration:2.0f animations:^ {
   [(UILabel*)addLbl[1] setBackgroundColor:[UIColor whiteColor]];
 } completion:^ (BOOL hasFinished) {
   self.view.userInteractionEnabled = YES;
 }];
}];
  

Комментарии:

1. после этого сегмента кода я добавляю другое графическое изображение, однако выполнение не будет отображать временное графическое изображение, когда я добавляю другое графическое изображение после этого сегмента кода

2. Если вам нужно анимировать несколько последовательностей в строке, например, первая: открывается дверь; вторая: человек входит в дверь — тогда попробуйте поместить другие ваши анимации в блок завершения первой анимации. Дайте мне знать, если это звучит понятно.

3. Я сделал это, и это после блока… в результате временное графическое изображение никогда не отображается

4. Полагаю, мне понадобится ваш фрагмент кода, чтобы помочь вам лучше. Пожалуйста, поделитесь этим.

5. если я оставлю это изменение обратно на белый, оно останется красным (временное изображение)