Как заставить UIView перерисовывать, пока пользователь прокручивает UIScrollView? - PullRequest
1 голос
/ 16 сентября 2010

У меня есть корневой UIView с двумя подвидами:

  1. пользовательский подкласс UIView
  2. UIScrollView

Пользовательский подкласс UIView имеет некоторое состояниеобновляется NSTimer, который срабатывает каждые N секунд.Когда состояние представления обновляется, оно вызывает [self setNeedsDisplay], что вскоре после этого вызывает перерисовку.Это все работает, как и ожидалось.

Однако, когда пользователь прокручивает UIScrollView, пользовательский подкласс UIView не перерисовывается.В тот момент, когда пользователь касается UIScrollView, перерисовки перестают происходить.Затем, когда пользователь перестает касаться UIScrollView, и прокрутка полностью останавливается, пользовательский подкласс UIView наконец перерисовывается.

Есть ли способ заставить пользовательский подкласс UIView перерисовывать, пока пользователь прокручивает UIScrollView

1 Ответ

1 голос
/ 16 сентября 2010

Я больше на стороне Mac, но я думаю, так как -setNeedsDisplay: флаг для перерисовки future , это никогда не происходит, потому что событие scroll / touch все еще связывает текущий (основной) цикл.В этом случае у вашего таймера никогда не будет возможности запустить главный цикл запуска, потому что прокрутка еще не закончена.

Исправление

Быстрый поиск показывает, что добавление ваших таймеров в цикл выполнения с помощью NSRunLoopCommonModes предотвращает их приостановку.Это может исправить ситуацию для вас, но вы все равно можете столкнуться с «пометкой для будущего отображения» и «нарисовать сейчас».

Другое дополнение

Ах.Кажется на этот вопрос уже отвечали SO .

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