Daniel García Baena Daniel García Baena - 1 year ago 106
iOS Question

Don't allow user interaction when activity indicator view is visible

I have a view which contains two views. One of those views contains two buttons and some text labels. The other one, with alpha set to 0.25, has an

to tell the user that the app is working and he must wait until it finishes. If the user touch a button while the
is spinning, when the
stops, the app remember the user action and responds to it. How can I discard the user interaction that occur while the
is spinning?

Thanks for reading.

P.D.: Like is commented in this thread, I prefer do not to use any modal solution.


I am currently using this code and it does not work right.

- (void)viewDidAppear:(BOOL)animated {

// The view appears with an UIActivityIndicatorView spinning.
[self showResults]; // The method that takes a long time to finish.
[self.activityIndicator stopAnimating];
// When the showResults method ends, the view shows the buttons to the user.
[self.activityIndicatorView setHidden:YES];
[self.menuButton setEnabled:YES];
[self.menuButton setUserInteractionEnabled:YES];
[self.playButton setEnabled:YES];
[self.playButton setUserInteractionEnabled:YES];
[self.view setUserInteractionEnabled:YES];
[self.interactionView setUserInteractionEnabled:YES];

Answer Source

I found these methods very useful:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];