Delays in the user interface are usually due to the fact that the code does not run in the main theme. Only the main thread can change the user interface, so if your code runs on some other background thread, it will have a delay of several seconds. You can guarantee that the code block will be launched in the main topic with:
dispatch_async(dispatch_get_main_queue(), ^{
});
I answered a similar problem:
cancelViewControllerAnimated: completion: has a couple of second delay
source
share