2014-11-06 2 views
0

У меня есть один веб-просмотр, в котором я загружаю одну HTML-страницу. У него есть документ, где каждой странице предоставляется ссылка (например, индекс) в начале.Веб-просмотр не вызывает shouldStartLoadWithRequest при щелчке по ссылке

Требование: при нажатии на URL содержимого веб-представления откройте эту ссылку в приложении safari по умолчанию, т.е. вне приложения.

Моя проблема: когда я нажимаю ссылку на контент, он обнаруживает ее как гиперссылку и открывает ее в браузере наружного сафари. Если я дважды нажимаю на кнопку «домой» -> выберите мое приложение -> нажмите на ту же ссылку еще раз, то он покажет мне контент в браузере приложения, то есть прокручивается до этого содержимого. Я использую метод делегата shouldStartLoadWithRequest, но он не получает вызов во втором сценарии.

Мой вопрос: Как я могу достичь обоих. Если щелкнуть какой-либо URL-адрес, откройте его во внешнем приложении. В приведенном выше случае он должен просто прокрутить вниз, чтобы показать содержимое страницы.

Пример кода ниже:

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

     case UIWebViewNavigationTypeFormSubmitted: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeBackForward: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeReload: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeFormResubmitted: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeLinkClicked: { 

      // user clicked on link 
      [[UIApplication sharedApplication] openURL:request.URL]; 

      return NO; 
     } 
     case UIWebViewNavigationTypeOther: 
      // request was caused by an image that's being loaded 
      break; 
    } 

    return YES; 
} 

Любая помощь?

+0

Устранение неполадок. – gran33

+0

Установлен делегат UIWebView? – Amandir

+0

+1 до @ gran33. Улучшите свой английский, пожалуйста. – kelin

ответ

0

Проблема заключается в том, что вы возвращаете YES из shouldStartLoadWithRequest метода после перенаправления на сафари. Чтобы добиться желаемого поведения, вы должны вернуть NO в первом случае, а затем, когда пользователь вернется обратно в приложение и второй раз щелкнет по ссылке, вы должны вернуть ДА. Это из-за запроса загрузки WebView только один раз в вашем случае.

Смежные вопросы