iPhone UIWebView для воспроизведения MP3. Протокол увольнения? - PullRequest
5 голосов
/ 17 февраля 2009

Так что я не могу найти никакой документации о том, как это сделать, может быть, кто-то знает, что здесь происходит.

Я нахожусь в UITableView (с UINavigationController) в моем приложении и запускаю UIWebView, который загружает mp3-файл в Интернет, помещая контроллер Web View в стек контроллера навигации. Это прекрасно работает, файл запускается и воспроизводится в быстродействующем проигрывателе, который использует Safari.

Проблема в том, что после завершения воспроизведения аудиофайла или нажатия пользователем кнопки «Готово» проигрыватель освобождается, и приложение возвращается к пустому веб-представлению с моей панелью навигации. Я могу нажать кнопку «Назад», чтобы вернуться к своему исходному UITableView, но этот пустой экран уродлив и должен уйти.

Итак, какое действие я могу использовать, чтобы поместить сообщение [webviewcontroller.navigationcontroller popviewcontroller]? Это загрузка экземпляра какого-либо другого класса (например, AVAudioPlayer) для воспроизведения аудио? Нужно ли что-то подкласс? Документация Apple о том, как он воспроизводит звук в UIWebView, в основном не существует.

Ответы [ 3 ]

5 голосов
/ 21 февраля 2009

Хорошо, так что я нашел гораздо лучшее, намного более простое решение; тот, который я должен был удалить строки кода из моего приложения, чтобы использовать. Я просто использовал UIWebview initWithFrame: CGRectMake (0.0,0.0,1.0,1.0), не добавил его в представление, затем вызвал NSURLRequest и подключил его к своей кнопке. Медиаплеер автоматически работает в полноэкранном режиме, и нет необходимости вызывать навигационный контроллер.

1 голос
/ 18 декабря 2010

Это может сэкономить кому-то час или два: UIWebView ведет себя по-разному на устройстве и на симуляторе (около iOS 4.1).

Я просто потратил некоторое время, пытаясь отключить веб-просмотр на симуляторе, но он все время работал на устройстве.

1 голос
/ 18 февраля 2009

Вы можете подделать его, используя javascript change location.href, а затем сделать что-то вроде этого:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType {

    NSString* path=[[request URL] relativePath];
    BOOL shouldContinue=YES;

    if ([path isEqualToString:@"/_my_custom_link"])
    {
        shouldContinue=NO;
        // do magical stuff
    }
    return shouldContinue;
}

Если это не сработает, вы всегда можете опросить его, выполнив

stringByEvaluatingJavaScriptFromString 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...