Alert views don't block the thread of execution when displayed. In other words, the user's tap will arrive after you've already returned from -shouldPerformSegueWithIdentifier:sender:
.
Instead of trying to figure out a way to change that behavior, you should return NO
immediately, and then programmatically trigger a segue later (after the user has responded to your alert view).