If you want to stop any user interaction(actually you will stop everything) call your problem method with blocking main thread selector:
[self performSelectorOnMainThread:@selector(blockingMethod:) withObject:blockingMethodParam waitUntilDone:YES]
This way you make sure everything stops until blockingMethod is fully executed. However you concept approach is not very good as no user ever wants it's UI to be blocked especially when there is no some kind of waiting screen.
reference:
– performSelectorOnMainThread:withObject:waitUntilDone:
Regards,
hris.to