Как определить, когда модальное представление UIWebView удалено? - PullRequest
1 голос
/ 11 января 2011

У меня есть UITableView, который при нажатии на ячейку отображается вид загрузки, в то время как UIWebView загружает его содержимое (файл mp3). Когда UIWebView начинает загружаться, он увеличивает свое модальное представление. Эта часть работает нормально - вид загрузки отображается до тех пор, пока модальный контроллер не поднимется вверх.

Проблема в том, что я не могу найти какой-либо метод для нажатия (веб-представление делегата, viewDidAppear и т. Д.), Чтобы определить, когда модальное представление закрылось, поэтому я могу удалить загрузочное представление при возврате в табличное представление. Пользователь по-прежнему видит представление загрузки, когда модальное представление закрывается.

Вещи, которые я пробовал:

1) Пытался использовать webViewDidFinishLoad, но он никогда не вызывается. (Не вызывается на mp3?)

2) Удаление представления загрузки на webViewDidStartLoad - проблема в том, что пользователь смотрит на белый экран, пока он продолжает загружаться, что довольно придирчиво, и я пытаюсь избежать этого.

3) Помещение UIWebView в его собственный UIViewController и установка альфа его представления в 0. (Идея состояла в том, чтобы не видеть белый вид и продолжать видеть экран загрузки, пока не появится модальный вид, тогда, возможно, поймать метод viewDidX.)

По сути, я хочу просмотр таблицы -> экран загрузки -> модальное представление веб-просмотра -> просмотр таблицы (экран загрузки отсутствует).

Единственное, о чем я могу подумать, - это создать невидимую кнопку поверх «готовой» кнопки модального вида и использовать ее, чтобы определить, когда веб-представление закрывается.

Мысли или предложения?

Спасибо

John

Ответы [ 2 ]

0 голосов
/ 11 января 2011

Я думаю, что лучшим решением в этом случае было бы использование AVAudioPlayer, так как я просто хочу аудио, так что я, вероятно, в конечном итоге и сделаю.

0 голосов
/ 11 января 2011

Где и как вы отклоняете модальное представление примерно так:

[self dismissModalViewControllerAnimated:YES];

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

[[NSNotificationCenter defaultCenter] postNotificationName:@"STOP_LOADING_VIEW" object:nil];

Класс, который отображает представление загрузки, должен будет наблюдать это уведомление:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopLoadingView) name:@"STOP_LOADING_VIEW" object:nil];

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

...