2

私は を持っています。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;
}
4

0 に答える 0