Добавление эффекта Pinch/Zoom в UIImageView внутри UIScrollView

У меня есть очень простое приложение для совместного использования экрана iPhone, я успешно добавил эффект сжатия/масштабирования в свое приложение, используя UIImageView внутри UIScrollView.

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


person Nasreddine    schedule 16.06.2011    source источник
comment
Может ли это быть проблемой с потоками? Вы обновляете все свои взгляды в основной теме?   -  person Eiko    schedule 17.06.2011
comment
Обновление представления UIImage работает нормально, проблема возникает, как только я начинаю сжимать/масштабировать   -  person Nasreddine    schedule 17.06.2011
comment
Как вы обновляете изображение просмотра изображений? А под щипком и масштабированием вы подразумеваете, что реализовали свой собственный или использовали метод viewForZooming.   -  person Deepak Danduprolu    schedule 17.06.2011
comment
У меня есть одноэлементный класс, который делает для меня сетевые вещи. Когда изображение получено, запускается делегат (который я создал), и мой viewController, который реализует этот делегат, обрабатывает процесс обновления. для увеличения/увеличения я использовал метод viewForZooming.   -  person Nasreddine    schedule 17.06.2011
comment
Вы используете любой цикл выполнения (CADisplaylink) в своем приложении...   -  person Chandan Shetty SP    schedule 17.06.2011
comment
@Chandan Я не уверен, что ты имеешь в виду, не хочешь объяснить?   -  person Nasreddine    schedule 17.06.2011


Ответы (1)


Если вы используете NSDefaultRunLoopMode, UIAPPlication добавляет режим цикла выполнения UITrackingRunLoopMode для отслеживания событий прокрутки, таких как прокрутка. Поскольку UIApplication переключается с NSDefaultRunLoopMode на UITrackingRunLoopMode, никакие события на NSDefaultRunLoopMode не будут вызываться до тех пор, пока UIAPPlication не переключится обратно на NSDefaultRunLoopMode.

Это может быть проблемой, исправление заключается в изменении NSDefaultRunLoopMode на NSRunLoopCommonModes .

Если вы не уверены, используете ли вы runloop или нет, как вы упомянули в комментарии. Просто найдите NSDefaultRunLoopMode в своем проекте.

person Chandan Shetty SP    schedule 17.06.2011
comment
Большое спасибо, переход с NSDefaultRunLoopMode на NSRunLoopCommonModes решил мою проблему. - person Nasreddine; 17.06.2011
comment
Я не знаю, как найти NSDefaultRunLoopMode - person Mona; 21.02.2012