2016-08-06 2 views
0

Я получил следующий фрагмент кода (для иллюстрации):UIView показан после того, как метод возвращает IBAction

- (IBAction)buttonPress:(id)sender { 
    UIView *overlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
    overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
    UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    activityIndicator.center = overlayView.center; 
    [overlayView addSubview:activityIndicator]; 
    [self.navigationController.view addSubview:overlayView]; 
    //[self.navigationController.view bringSubviewToFront:overlayView]; 
    [activityIndicator startAnimating]; 

    sleep(10); 

    //[overlayView removeFromSuperview]; 
} 

Интересно, почему вид наложения отображается только после того, как метод возвращает ...

+0

, откуда возвращается –

+0

@MikeAlter из стека :) –

ответ

0

Я думаю, это потому, что sleep(10) блокирует основной поток, который отвечает за выполнение связанных с пользовательским интерфейсом действий, таких как рисование на экране.

Удалите линию sleep(10) и должны работать нормально.

Вот по ссылке, чтобы ТАК в случае, если вы заинтересованы, как использовать задержки в кока-контакт:
Adding delay between execution of two following lines

+0

справа ... Тогда это плохо идея использовать синхронные операции внутри метода. –

Смежные вопросы