2012-01-13 3 views
0

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

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

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

ответ

1

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

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

Ссылка для документации по performSelector:withObject:afterDelay является here

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

Смежные вопросы