ios - type - Cómo abrir la url en safari no en webview
wkwebview example (10)
Quiero abrir un url en safari, salir de la aplicación y no en webview.
Implementé el UIWebViewDelegate pero todavía no puedo abrir la url. Básicamente no puedo hacer clic en la url.
A continuación se muestra el código:
-(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;
}
******************** Swift **********************
// MARCAR: Botón Haga clic en Abrir con 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)
}
// MARCA: SafatriViewConroller Descartar
func safariViewControllerDidFinish(controller: SFSafariViewController)
{
controller.dismissViewControllerAnimated(true, completion: nil)
}
Después de leer los comentarios, creo que esto es lo que estás buscando:
Implementar este método:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
desde UIWebViewDelegate
y dependiendo de ese argumento de solicitud, debe devolver TRUE
o FALSE
. Si no desea que la vista web la abra, debe llamar a:
[[UIApplication sharedApplication] openURL:request.URL];
Como otros mencionan y devuelven FALSE
.
Espero que esto ayude. ¡Aclamaciones!
EDITAR: Si los enlaces no son reconocidos en su vista web, intente esto:
[webView setDataDetectorTypes:UIDataDetectorTypeLink]
Encontré esta respuesta en google, pero necesito después de abrir el navegador terminar mi aplicación y continuar con el navegador.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://google.com"] options: @{} completionHandler: nil];
en Android puedo hacerlo Es fácil llamar al método finish()
¿Cómo puedo hacer eso?
Esta respuesta fue fácilmente disponible a través de Google:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.apple.com"]];
Simplemente coloque eso en su botón de presión o en el evento que desee para activarlo, y luego pase una URL (reemplace la @ "http: /www.apple.com").
Esto funciona para mí:
[[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString: @"http://www.apple.com"]];
Para iOS 10+
// Objective-C
UIApplication *application = [UIApplication sharedApplication];
[application openURL:URL options:@{} completionHandler:nil];
// Swift
UIApplication.shared.open(url, options: [:], completionHandler: nil)
Para más información consulte THIS .
Swift y no hay forma de 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)
}
- (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;
}
Utilicé un archivo html en local. En este html hay algunos enlaces. Si configura el delegado UIWebViewDelegate y utiliza este html local, se abrirá en su webView y los otros enlaces se abrirán en safari
Escribí "archivo" porque este enlace es "archivo: ///Usuarios/~/x.app/about.html" en local.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];