私は を持っています。UIWebView
それが のデリゲートになれれば、私の人生はずっとシンプルになりますNSURLConnection
。このようなカテゴリを作りました
@interface UIWebView (NSURLConnectionDelegate) <NSURLConnectionDelegate>
//these methods are used by the NSURLConnection, and are implemented in the .m
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection;
@end
以前はデリゲートだった別のビューがあったため、実装のメソッドは機能しますが、理由により変更する必要があります。
私はそのNSURLConnection
ようにデリゲートを与えます
#import "UIWebView+NSURLConnectionDelegate.h"
[[NSURLConnection alloc] initWithRequest:request delegate:webview]; //used to be self but now i need the webview to know about its own connection because there are multiple webviews
しかし、このようなカテゴリの場合、どのデリゲート メソッドも呼び出されません。
以前に誰かがこのようなことをしたことがありますか、それとも NSURLConnection がwebview
実際にはデリゲートなどではないと考えているため、これは機能しませんか?
編集してさらにコードを表示します。
- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"shouldStartLoadWithRequest %@ %d", request.URL.absoluteURL.description, navigationType);
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
if (!authed) {
authed = NO; //gets set to yes when delegate methods work (also are some print outs in the delegate methods which are not printing at all)
urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:webview];
return NO;
}
return YES;
}