我的didFinishLoad
方法有问题,UIWebView
因为它一直在射击。我想尝试estimatedProgress解决方案,但不幸的是我不知道在哪里可以找到这些框架。我正在运行 Mountain Lion 并使用最新版本的 XCode。此外,对于 UIWebView 多次触发,这是最好的方法还是有新的方法。SO上似乎有一个javascript答案,但这对我不起作用。那是在 2009 年,我听说 Apple 拒绝任何使用私有 API 的应用程序。请帮帮我!
谢谢大家!
如何跟踪未完成请求的数量?我编写了一些似乎有效的测试代码:
@interface WebViewDelegate : NSObject<UIWebViewDelegate>
@property ( nonatomic ) NSUInteger numberOfRunningRequests ;
@end
@implementation WebViewDelegate
-(void)webViewDidStartLoad:(UIWebView *)webView
{
self.numberOfRunningRequests = self.numberOfRunningRequests + 1 ;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
self.numberOfRunningRequests = self.numberOfRunningRequests - 1 ;
if ( self.numberOfRunningRequests == 0 )
{
NSLog(@"done!\n") ;
}
}
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UIWebView * webView = [[ UIWebView alloc ] initWithFrame:self.window.bounds ] ;
static WebViewDelegate * delegate = nil ;
delegate = [[ WebViewDelegate alloc ] init ] ;
webView.delegate = delegate ;
[self.window addSubview:webView ] ;
NSURLRequest * request = [ NSURLRequest requestWithURL:[ NSURL URLWithString:@"http://stackoverflow.com"] ];
[ webView loadRequest:request ] ;
return YES;
}
@end
(创建一个 Xcode 示例项目并用这个替换你的 AppDelegate.m)
如果框架是指在您链接到的页面上的代码中导入的 .h 文件,这里是直接下载它们的链接。如需进一步帮助,您需要详细说明。
编辑:另外,请参阅:用于异步 Web 服务调用的 NSURLConnection NSURLRequest 代理
链接的答案解释了如何NSURLRequest
请求连接并为请求的不同状态获取不同的回调,例如- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data