Открытие мобильного Safari из UIWeb View - PullRequest
0 голосов
/ 29 ноября 2010

Я знаю, что это уже обсуждаемая тема, и я попробовал все решения, опубликованные здесь, но безуспешно. У меня есть UIWebView, который показывает локальные файлы, и я хочу открыть веб-ссылки (начиная с http://) в Safari, а не внутри представления.
Вот код моего «маленького» приложения: onceViewController.h

#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 Ответ

1 голос
/ 29 ноября 2010

Вам необходимо реализовать метод webView:shouldStartLoadWithRequest:navigationType: делегата веб-просмотра.Если для NavigationType установлено значение UIWebViewNavigationTypeLinkClicked, при необходимости проверьте request.URL и откройте его в Safari с помощью [[UIApplication sharedApplication] openURL:request.URL].

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...