Каждый раз, когда вы загружаете UIWebView, вы можете сначала запустить фрагмент javascript для содержимого.
[webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.location = 'app://close-webview'; };"];
Это просто перехватывает нормальное поведение window.close()
и дает вам шанс перехватить вызов в вашем Objective-C.
Тогда в вашем 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-контента.