Je veux ouvrir une URL dans un safari, sortir de l'application et non dans une vue Web.
J'ai implémenté le UIWebViewDelegate mais je n'arrive toujours pas à ouvrir l'URL . En gros, je ne peux pas cliquer sur l'URL.
Ci-dessous le code:
-(void)newView:(NSString *)title Description:(NSString *)desc URL:(NSString *)url{
webView =[[UIWebView alloc]initWithFrame:CGRectMake(15, 17, 190, 190)];
webView.backgroundColor=[UIColor clearColor];
webView.delegate=self;
webView.opaque = NO;
[webView loadHTMLString:[NSString stringWithFormat:@"<html><body p style='color:white' text=\"#FFFFFF\" face=\"Bookman Old Style, Book Antiqua, Garamond\" size=\"5\">%@ %@</body></html>", desc,url] baseURL:nil];
v = [[HUDView alloc] initWithFrame:CGRectMake(60, 70, 220, 220)];
cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
cancelButton.frame = CGRectMake(0, 0, 30, 30);
[cancelButton setBackgroundImage:[UIImage imageNamed:@"closebox.png"] forState:UIControlStateNormal];
[cancelButton addTarget:self action:@selector(cancelButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[v addSubview:cancelButton];
[v addSubview:webView];
[self.view addSubview:v];
}
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
return YES;
}
Après avoir lu les commentaires, je pense que voici ce que vous recherchez:
Implémentez cette méthode:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
à partir de UIWebViewDelegate
et en fonction de l'argument de cette requête, vous devriez renvoyer TRUE
ou FALSE
. Si vous ne souhaitez pas que la vue Web l'ouvre, vous devez appeler:
[[UIApplication sharedApplication] openURL:request.URL];
comme d'autres l'ont mentionné et retournent FALSE
.
J'espère que cela t'aides. À votre santé!
EDIT: Si les liens ne sont pas reconnus dans votre vue Web, essayez ceci:
[webView setDataDetectorTypes:UIDataDetectorTypeLink]
Cette réponse était facilement disponible via Google:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.Apple.com"]];
Il suffit de mettre cela dans la touche ou l'événement de votre choix, puis de lui transmettre une URL (remplacez le @ "http: /www.Apple.com").
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];
Pour iOS 10+
// Objective-C
UIApplication *application = [UIApplication sharedApplication];
[application openURL:URL options:@{} completionHandler:nil];
// Swift
UIApplication.shared.open(url, options: [:], completionHandler: nil)
Pour plus d'informations, reportez-vous à THIS .
Cela fonctionne pour moi:
[[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString: @"http://www.Apple.com"]];
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (![[NSString stringWithFormat:@"%@",[request URL]] containsString:@"file"] ) {
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
J'ai utilisé un fichier HTML en local. Dans ce code HTML, il y a quelques liens . Si vous définissez le délégué UIWebViewDelegate et utilisez ce code HTML local, celui-ci s’ouvrira dans votre WebView et les autres liens s’ouvriront dans safari
J'ai écrit "fichier" car ce lien est "fichier: ///Utilisateurs/~/x.app/about.html" en local.
******************** Rapide **********************
// MARK: Bouton Cliquez sur Ouvrir avec SafariViewController
private var urlString:String = "https://google.com"
@IBAction func openWithSafariVC(sender: AnyObject)
{
let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!)
svc.delegate = self
self.presentViewController(svc, animated: true, completion: nil)
}
// MARK: SafatriViewConroller Dismiss
func safariViewControllerDidFinish(controller: SFSafariViewController)
{
controller.dismissViewControllerAnimated(true, completion: nil)
}
J'ai trouvé cette réponse dans google mais je dois, après avoir ouvert le navigateur, fermer mon application et continuer le navigateur.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://google.com"] options: @{} completionHandler: nil];
dans Android peut le faire facile d'appeler la méthode finish()
comment puis-je le faire
Rapide et pas de chemin WebView
if let url = NSURL(string: "http://www.Apple.com") {
UIApplication.sharedApplication().openURL(url)
}
Swift 3 (iOS 10+):
if let url = URL(string: "http://www.seligmanventures.com") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}