Как загрузить UIWEBVIEW с кнопкой закрытия на вершине?
-
28-09-2019 - |
Вопрос
В настоящее время у меня есть следующий код, который загружает UIWEBVIEW с другого представления. Теперь все равно у меня может быть кнопка закрытия?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
[self.view addSubview:webView];
NSURLRequest *urlRequest;
NSURL *urlforWebView;
urlforWebView=[NSURL URLWithString:@"http://www.google.com"];
urlRequest=[NSURLRequest requestWithURL:urlforWebView];
[webView loadRequest:urlRequest];
}
Я собираюсь загрузить страницу, созданную с помощью jQuery Mobile, поэтому кнопка закрытия внутри страницы также будет работать нормально. Но на навигационной баре будет идеально. Кстати, мое приложение делает нет иметь UinavIgintBar.
Решение
Я бы создал новый подраздел UIViewController
, сказать WebViewController
с ниб. Тогда я бы добавил UINavigationBar
с кнопкой закрытия и UIWebView
. Отказ Затем, чтобы показать свой контроллер просмотра веб-сайтов, вы можете сделать что-то вроде:
WebViewController *webViewController = [[WebViewController alloc] init];
webViewController.loadURL = [NSURL URLWithString:@"http://www.google.com"];
[self presentModalViewController:webViewController animated:YES];
[webViewController release];
В твоей WebViewController
Вы можете определить:
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) NSURL *loadURL;
- (IBAction)close:(id)sender;
И реализовать что-то вроде этого:
- (void)viewDidLoad {
[super viewDidLoad]
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:self.loadURL];
[self.webView loadRequest:urlRequest];
}
- (IBAction)close:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}
Другие советы
Всякий раз, когда вы загружаете UIWEBVIEW, вы можете сначала запустить фрагмент JavaScript на контент.
[webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.location = 'app://close-webview'; };"];
Что просто угнать нормальное поведение window.close()
И дает вам возможность поймать звонок в вашей цели - с.
Тогда в вашем UiWebViewDelegate вы можете прослушать все, что вы выбрали как близкий URL.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if([request.URL.absoluteString isEqualToString:@"app://close-webview"]) {
webView.hidden = YES;
// or whatever you want to do to remove the UIWebView...
return NO;
}
return YES;
}
Немного взлома, но это позволит веб-разработчику контролировать внешний вид кнопки «Закрыть» из содержимого HTML.