2016-06-04 4 views
0

У меня есть WebView с инлайн URL ссылки, которые открываются с SFSafariViewController, как показано ниже:SFSafariViewController не повторно открыть URL-ссылку WebView инлайн

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
    if (inType == UIWebViewNavigationTypeLinkClicked) { 
     if ([SFSafariViewController class] != nil) { 
      NSString *inR = [[inRequest URL] absoluteString]; 
      NSURL *inReq = [NSURL URLWithString:inR]; 
      SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:inReq entersReaderIfAvailable:YES]; 
      safariVC.delegate = self; 
      [self presentViewController:safariVC animated:YES completion:nil]; 
     } else { 
      [[UIApplication sharedApplication] openURL:[inRequest URL]]; 
      return NO; 
     } 
    } 
    return YES; 
} 

#pragma mark - SFSafariViewController delegate methods 
-(void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully { 
    // Load finished 

} 

-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller { 
    // Done button pressed 
    NSLog(@"DONE PRESSED!!!"); 
} 

Когда я нажмите кнопку DONE правильно возвращается к моей WebView. Проблема в том, что если я снова нажму на одну и ту же линию ссылок, она не откроется с SFSafariViewController, а в Webview, чего я не хочу. Я попытался принудительно перезагрузить Webview в safariViewControllerDidFinish, но безуспешно.

Не могли бы вы помочь? Благодаря!

+0

Вы не хотите, чтобы вернуть 'NO' в конце вашего' если ([класс SFSafariViewController ]! = nil) 'block? – beyowulf

+0

Это сработало! Большое вам спасибо за вашу оперативную помощь. –

ответ

0

код исправлен, как показано ниже (после предложения beyowulf) и теперь работает нормально:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
    if (inType == UIWebViewNavigationTypeLinkClicked) { 
     if ([SFSafariViewController class] != nil) { 
      NSString *inR = [[inRequest URL] absoluteString]; 
      NSURL *inReq = [NSURL URLWithString:inR]; 
      SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:inReq entersReaderIfAvailable:YES]; 
      safariVC.delegate = self; 
      [self presentViewController:safariVC animated:YES completion:nil]; 
      return NO; 
     } else { 
      [[UIApplication sharedApplication] openURL:[inRequest URL]]; 
      return NO; 
     } 
    } else { 
     return YES; 
    } 
} 

#pragma mark - SFSafariViewController delegate methods 
-(void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully { 
    // Load finished 
} 

-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller { 
    // Done button pressed 
    NSLog(@"DONE PRESSED!!!"); 
} 
Смежные вопросы