我正在使用Three20库重新编写我的应用程序。在我的应用程序中,我打开了各种网站的链接,其中一些网站包含未签名证书的网站。
在我的非three20应用程序中,这就是我加载此类网站的方式(使用ASIHTTPRequest):
//=======================================================================================
// Once the correct URL is set, load it using ASIHTTPRequest
-(void)loadURL:(NSURL *)localURL
{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
if(regularLoad)
{
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:localURL];
[webView loadRequest:req];
regularLoad = false;
} else {
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:localURL];
[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request startAsynchronous];
[request release];
}
}
//=======================================================================================
// Delegate method for ASIHTTPRequest
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
webView.scalesPageToFit = YES;
[webView loadHTMLString:responseString baseURL:request.url];
}
主要部分是webView的loadHTMLString方法,Three20 TTWebController没有这个方法。
有没有人能够在Three20中完成这项任务?我已经在网上搜索过,但没有找到解决办法。
感谢您的帮助!
答案 0 :(得分:1)
您可以扩展TTWebController类并自行添加缺少的loadHTMLString函数。
@interface WebController : TTWebController
/////////////////////////////////////////////////////////////////////////////////////////////
@implementation WebController
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL {
[_webView loadHTMLString:string baseURL:baseURL;];
}
您需要使用init函数创建Web控制器,而不是使用TTNavigator调用它,因此您将引用它