Почему в iOS 4.0 UIScrollView zoomToRect: animated: не запускает scrollViewDidScroll или scrollViewDidZoom делегирует во время анимации?

Мне нужно внимательно следить за масштабом прокрутки, чтобы я мог обновить представление содержимого ' s (подвид, управляющий несколькими CALayers ) в соответствии с анимированным масштабированием прокрутки.

В iOS 3.1 все работает, как ожидалось, я использую zoomToRect: animated: и scrollViewDidScroll: сообщение UIScrollViewDelegate вызывается повторно во время анимации , что позволяет мне обновлять элементы подпредставления в соответствии с фактическим масштабированием.

Тот же код в iOS 4.0 выполняет не проявлять такое же поведение. Когда я вызываю zoomToRect: animated: , делегаты ( scrollViewDidScroll: и scrollViewDidZoom ) вызываются только один раз , что делает мои подэлементы десинхронизируется до завершения анимации. По факту, субэлементы сразу же подпрыгивают, а затем захватываются анимацией масштабирования, пока все не окажется в нужном месте. Это как если бы анимация не улавливала изменения в подпредставлениях CALayers .

Я пробовал анимировать вручную с помощью блоков анимации, но ситуация та же, без прогрессивных вызовов обратного вызова. Я также пробовал KVO, но мне непонятно, как я могу использовать анимацию, управляемую UIScrollView.

Есть ли обходной путь в iOS 4, который позволил бы мне передать значение шкалы в мои подпредставления как Масштаб UIScrollView анимирован?

28
задан Jacob Relkin 15 November 2010 в 19:51
поделиться