Не останавливайтесь основной поток начиная с the main thread is responsible for handling events и приложения пользовательского интерфейса будет безответственность. Если основной поток приостановлен, он не будет обрабатывать события, поэтому он не будет отправлять ключевые события первому ответчику.
Если вы считаете, что вам нужно приостановить основной поток, вам, вероятно, придется перепроектировать вашу программу, чтобы поведение, требующее сна (если оно требует спать), смещается на вторичный поток. Если вам необходимо обновить интерфейс пользователя из вторичного потока, вы должны использовать -performSelectorOnMainThread:withObject:waitUntilDone:
.