2009-01-11 13 views
8

Estoy en el tramo final de mi primera aplicación de iPhone simple. Estoy construyendo una vista "sobre", con créditos/información/etc.Hipervínculos dentro del texto "sobre" para la aplicación de iphone

Estoy fallando en la cosa más simple: ¿cómo puedo incluir hipervínculos en el texto? Estoy al día usando UIView con un UILabel para el texto.

He visto aquí, y las aplicaciones de muestra, pero no llegaron a ninguna parte. ¿Debo usar UIWebView?

Thx.

Respuesta

11

Sí, use un UIWebView y ponga HTML estático en él.

así:

[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil]; 
4

Puede desencadenar Safari llamando UIApplication openURL: método con el URL que desea visualizar. Esto cerrará su aplicación, y luego abrirá safari (o correo/youtube/etc.).

Querrá hacer su enlace de alguna manera, quizás en un botón. Esa parte depende de ti.

Si desea incrustar contenido html en su vista, utilice UIWebView.

Los enlaces requieren el inicio de sesión del centro de desarrollo de iPhone.

UIApplication openURL:

iPhone URL Scheme Reference

1

Gracias Frank y Ryan.

Además de la dirección de Frank, también tuve que implementar el UIWebViewDelegate y vincularlo en Interface Builder. El motivo fue que cada enlace en el que se hacía clic se abriría en mi aplicación (sin navegación posible ...). Sólo necesitaba para poner en práctica este método que se abre cada URL con la aplicación apropiada:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return false; 
    } 
    return true; 
} 
6

para iniciar el navegador web en la URL especificada:

NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
[[UIApplication sharedApplication] openURL:target]; 

Este código se puede ejecutar en cualquier lugar. Subclasifiqué UILabel, agregué el método touchedsEnded y lo coloqué allí. (No se olvide de establecer labelname.userInteractionEnabled = SI;)

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
    [[UIApplication sharedApplication] openURL:target]; 
} 
4

UIWebView es probablemente la manera incorrecta de hacer esto. Es MUY demasiado exagerado para algo como esto. Debería consultar un proyecto de Github llamado .

Detectará automáticamente cualquier URL que esté dentro de la propiedad .text.

Se puede utilizar de este modo:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)]; 
label.delegate = self; 
label.text = @"Check out http://dundermifflin.com to find some great paper deals!"; 

A continuación, sólo asegúrese de self implementa este método:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url { 
    [[UIApplication sharedApplication] openURL:url]; 
} 

También puede utilizar los linkColor y textColor propiedades para configurar la apariencia de la etiqueta . A partir de este punto, puede usarlo como cualquier otro UILabel.

Recuerde configurar el delegate en nil cuando haya terminado para asegurarse de que todo esté limpio.

Espero que esto ayude.

Cuestiones relacionadas