UIWebView зависает при выборе текста

Мое приложение в очень редких случаях зависает, когда я выбираю текст в UIWebView. Вот как это происходит:

  1. Нажмите и удерживайте, чтобы выделить текст
  2. Текст выбирается
  3. Все приложение зависает, не реагирует на прикосновения, но я все еще вижу работающие операции
  4. Может замерзнуть примерно на 10 с. После этого появится UIMenuController. Если я попытаюсь прокрутить во время зависания, прокрутка произойдет после того, как приложение снова отреагирует
  5. Если текст все еще выделен, он снова зависает при прокрутке. Случается снова и снова
  6. Если мне удалось прокрутить выделенный текст из представления, прокрутка остальной части веб-просмотра в порядке, пока я не прокручу выделенный текст назад
  7. Если я выйду из UIViewController, содержащего UIWebView, я могу подтвердить, что они оба освобождены. Вернитесь в новый UIViewController с UIWebView, и это произойдет снова.
  8. Это продолжает происходить с новыми экземплярами UIWebView и даже когда я закрываю и возобновляю работу приложения. Только останавливается, если я принудительно перезапускаю приложение.

Кто-нибудь знает, как я могу отладить это? Я никогда не видел этого в симуляторе. Только случается очень редко на устройстве.


person honcheng    schedule 08.05.2013    source источник
comment
Можете ли вы заставить это произойти при профилировании приложения с помощью Instruments? Может помочь вам увидеть, что происходит.   -  person iwasrobbed    schedule 08.05.2013
comment
Вы пытались выйти из всех других приложений во время работы вашего приложения?   -  person sangony    schedule 08.05.2013


Ответы (1)


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

Например, вы не добавляете веб-представление в подпредставления UINavigationController напрямую, а в его массив контроллеров представлений и т. д.

Все остальное не помогает создать демонстрационный проект, который также отображает проблему, и загрузить его в DropBox, где мы можем запустить его самостоятельно.

person David H    schedule 08.05.2013