2009-09-02 1 views
1

В iPhone 3.0 SDK, как я могу быть проинформирован о завершении анимации zoomToRect:animated:?Сообщается, когда анимация zoomToRect: анимация завершена

Иногда прокрутка не увеличивается вообще (если она уже находится на правильном уровне масштабирования), и, похоже, нет способа обнаружить это.

+0

Только вопрос: если это не на самом деле зум вам нужно знать? –

+0

Да, мне нужен способ выяснить любой случай. –

+0

Вы вызываете zoomToRect: .... с тем же самым прямоугольником, который в настоящее время отображается, или вы говорите, что вы увеличиваете масштаб на _different_ rect, но в том же масштабе? –

ответ

4

На делегата, вы можете слушать - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

см UIScrollView и UIScrollViewDelegate

+1

Не работает, если он не масштабируется. –

+1

Вы не должны вызывать zoomToRect, если вам не нужно увеличивать масштаб. Используйте свойства масштабирования, масштабирования и масштабирования масштабирования вашего прокрутки, чтобы обнаружить, что – slf

+0

https://developer.apple.com/IPhone/library/samplecode/ScrollViewSuite/index.html – slf

2

Самый простой способ, вероятно, положить в проверке перед началом анимации. Если уровень масштабирования уже правильный, вызовите [self performSelectorOnMainThread: @selector (myMethod) withObject: id waitUntilDone: NO].

Вы не сможете использовать тот же метод, как scrollViewDidEndZooming, потому что вы можете передавать только один аргумент, но это вызовет асинхронный вызов в главном потоке

+0

Хорошее обходное решение; в основном, что я закончил делать. –