Ответ 1
Установили ли вы делегат UIWebView
на UIViewController
? Нет ничего плохого в вашем коде, насколько я могу видеть, поэтому он может быть чем-то маленьким.
У меня есть приложение с UIWebView
внутри a UIViewController
. Я загружаю HTML из веб-службы в виде строки следующим образом:
self.webView loadHTMLString:_string baseURL:nil
Возможно ли, чтобы ссылки HTML в этой строке были открыты в браузере, а не в UIWebView в моем приложении? Как я могу это сделать?
Я пробовал это в UIViewController, что "размещает" UIWebVIew:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
Кажется, он не работает.
Любые идеи?
Установили ли вы делегат UIWebView
на UIViewController
? Нет ничего плохого в вашем коде, насколько я могу видеть, поэтому он может быть чем-то маленьким.
Добавьте это в класс..
@interface yourViewController : UIViewController
<UIWebViewDelegate>
Добавьте это в View, загрузив
- (void)viewDidLoad
{
[description loadHTMLString:string baseURL:nil];
description.delegate = self;
}
Добавьте это в свой .m файл
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
return YES;
}
Примечание:
UIWebView *description;
@synthesize description;
Тогда он будет работать отлично, как вы заслуживаете.!!:)
Установите делегат UIWebView на ваш UIViewController, после чего используйте этот метод UIWebview и проверьте условие, например, теперь веб-просмотр текущего url - google.com, если предположить вы нажали на gmail, url содержит строку с gmail. Используйте приведенный ниже метод, и он открыл браузер Safari и автоматически загрузил этот URL-адрес.
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
NSURL *url = [inRequest URL];
if ([[url absoluteString] rangeOfString:@"gmail"].location == NSNotFound) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
}
return YES;
}
Если вы уже правильно настроили UIWebViewDelegate, просто выполните
self.webView loadHTMLString:_string baseURL:nil
self.webView.delegate = self;
должен работать
Добавьте эту строку ( self.webview.delegate = self; )
Для примера в viewController.m
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[self.webview loadHTMLString:htmlString baseURL:nil];
self.webview.delegate = self;
Apple представила контроллер Safari View на iOS 9. Safari View Controller предлагает все функции, которые пользователь ожидает от Safari для вашего приложения, даже не покидая его.
Сначала нам нужно импортировать Safari Services
#import <SafariServices/SafariServices.h>
Для цели C: -
NSString *yourUrl = @"http://yourURL";
SFSafariViewController *svc= [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString: yourUrl]];
[self presentViewController:svc animated:YES completion:nil];
Для Swift: -
let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!)
self.presentViewController(svc, animated: true, completion: nil)
Да, в теге гиперссылки добавьте
target="blank"
И один вопросительный знак будет прекрасным, спасибо