iPhone ... Приостановить текущий поток между действиями (не блокирует) - PullRequest
0 голосов
/ 13 января 2012

У меня есть функция, которая выбирает строку в UITableView, а затем запускает didSelectRowAtIndexPath, чтобы эмулировать нажатую строку. Все это происходит очень быстро, из-за чего трудно увидеть, что произошло, я хочу искусственно сделать паузу между этими действиями, чтобы это было приятнее для глаз.

Я реализовал это, используя NSTimer, используя следующий код, однако разрешение его составляет всего 1 секунду. В идеале я хотел бы сделать паузу около 300 мс. Как я могу достичь как можно проще?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];

1 Ответ

1 голос
/ 13 января 2012

Я не уверен, что согласен с непосредственным вызовом didSelectRowAtIndexPath.Я бы предложил перенести все, что вы там делаете, в отдельный метод (скажем, selectionResponse:) и вызвать его напрямую.

Как только вы это сделаете, вы можете использовать performSelector:withObject:afterDelay: для вызова метода selectionResponse:, установив для аргумента afterDelay: любое значение, которое вы хотите.

Ссылка на документацию по performSelector:withObject:afterDelay здесь

Обратите внимание, что также является хорошей идеей использовать + cancelPreviousPerformRequestsWithTarget:selector:object: (из того же документа) в вашей транзакции, чтобы отменить ожидающий запрос на выполнение, если ваш пользователь решит отказаться от вашего контроллера представления в течение периода задержкиперед вызовом селектора.Это предотвратит сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...