2011-03-16 4 views
0

Je travaille sur une application qui reçoit un flux que j'affiche dans un UIWebView. Le flux a des liens intégrés que je veux ouvrir dans Safari au lieu de thew WebView. J'ai regardé plusieurs autres questions qui sont affichées ici. Je ne suis pas sûr de ce qui me manque, mais je pense que c'est quelque chose de simple. Voici mes .h et les fichiers .mOuvrir un lien dans UIWebView dans Safari

 
#import 
@class BlogRss; 


@interface EnduranceDailyWorkoutViewController : UIViewController { 
    IBOutlet UIWebView * descriptionTextView; 
    BlogRss * currentlySelectedBlogItem; 
} 

@property (nonatomic, retain) UIWebView * descriptionTextView; 
@property (readwrite, retain) BlogRss * currentlySelectedBlogItem; 
@end 
#import "EnduranceDailyWorkoutViewController.h" 
#import "BlogRss.h" 

@implementation EnduranceDailyWorkoutViewController 


@synthesize descriptionTextView = descriptionTextView; 
@synthesize currentlySelectedBlogItem = currentlySelectedBlogItem; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSString *html = [NSString stringWithFormat:@"%@ %@",currentlySelectedBlogItem.title, currentlySelectedBlogItem.contentEncoded]; 
    [descriptionTextView loadHTMLString:html baseURL:[NSURL URLWithString:nil]]; 

} 

-(BOOL)webView:(UIWebView *)descriptionTextView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (UIWebViewNavigationTypeLinkClicked == navigationType) { 
     [[UIApplication sharedApplication] openURL:[request URL]]; 
     return NO; 
    } 
    return YES; 
}

Utilisation Interface Builder je le IBOutlet lié et UIWebView. S'il vous plaît laissez-moi savoir ce que je manque. J'ai mis des points de rupture dans la section webView mais le code n'y arrive jamais, c'est presque comme si quelque chose n'était pas correctement lié dans IB.

Répondre

1

Vous devez vous assurer que le délégué UIWebView est défini sur votre contrôleur. Vous pouvez le faire dans le constructeur de l'interface, ou vous pouvez modifier votre méthode viewDidLoad:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // add this line to set the delegate of the UIWebView 
    descriptionTextView.delegate = self; 
    NSString *html = [NSString stringWithFormat:@"%@ %@",currentlySelectedBlogItem.title, currentlySelectedBlogItem.contentEncoded]; 
    [descriptionTextView loadHTMLString:html baseURL:[NSURL URLWithString:nil]]; 
} 
+0

GreginYEG, Merci pour l'aide. J'oublie de mettre le délégué. Je pensais que j'avais fait cela dans Interface Builder mais apparemment pas. – James

Questions connexes