2010-11-29 8 views
0

既に議論されているトピックであることは知っていますが、ここに掲載されたすべてのソリューションを試しましたが、成功しませんでした。私はローカルファイルを表示するUIWebViewを持っていて、SafariでWebリンク(http://で始まる)を開きたいのですが、ビューの中ではありません。ここで
が私の "小さな" アプリのコードです: onceViewController.hUIWebビューからモバイルSafariを開く

#import <UIKit/UIKit.h> 

@interface onceViewController : UIViewController <UIWebViewDelegate>{ 
    IBOutlet UIWebView *slampSite; 
} 

@property (retain, nonatomic) UIWebView *slampSite; 

@end 

onceViewController.m

#import "onceViewController.h" 

@implementation onceViewController 

@synthesize slampSite; 

#define WWW_ROOT @"files/en" 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"home" ofType:@"html" inDirectory:WWW_ROOT]; 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [slampSite loadRequest:request]; 
} 

- (BOOL)webView:(UIWebView *)slampSite shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 
{ 
    NSURL *requestURL = [ [ request URL ] retain ]; 
    if (([ [ requestURL scheme ] isEqualToString: @"http" ] 
      || [ [ requestURL scheme ] isEqualToString: @"https" ]) 
     && (navigationType == UIWebViewNavigationTypeLinkClicked)) { 
     return ![ [ UIApplication sharedApplication ] openURL: [ requestURL autorelease ] ]; 
    } 
    [ requestURL release ]; 
    return YES; 
} 
[omissis] 

- (void)dealloc { 
    [slampSite release]; 
    [super dealloc]; 
} 

@end 

私は何をしないのですか?

ありがとうございました!

答えて

1

webviewデリゲートのwebView:shouldStartLoadWithRequest:navigationType:メソッドを実装する必要があります。 navigationTypeがUIWebViewNavigationTypeLinkClickedの場合は、必要に応じてrequest.URLを調べて、Safariで[[UIApplication sharedApplication] openURL:request.URL]と開きます。

+0

ありがとうございました!私はあなたの提案を試みましたが、何かがまだ欠けていると思います(何かばかげて、私は思います)。私はコードを更新しました。何が間違っているのか分かりました。 – Giovanni

+0

解決済み...インターフェイスビルダーでxibファイルを修正する必要がありました。 – Giovanni

関連する問題