我正在使用objective-c& iphone 3.0 sdk
我想检索网址(网页或pdf)的内容并在UIWebView
似乎要做的事情是这样的:
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
除了一件事之外,这种方法效果很好。
有些请求需要一段时间(比方说5-10秒)。我有一个UIActivityIndicatorView,我想在加载请求的开头和结尾“开始”和“停止”。
然而,如果我这样做
[busySignal startAnimating];
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
[busySignal stopAnimating];
它不起作用,因为loadRequest调用是以异步完成的,因此我的UIActivityIndicatorView几乎立即停止
有没有办法在网址请求的开头和结尾开始/停止我的“busySignal”?
作为替代方案,我认为这可以通过NSURLConnection完成,它给我回调函数“connectionDidFinishLoading:”
但我似乎无法弄清楚如何从NSURLConnection转到显示网页。
所以,我猜这是两个问题。
1。你可以在调用loadRequest的开始/结束时启动/停止UIActivityIndicatorView吗? 2. 如何使用NSURLConnection检索URL的内容并在UIWebView上显示信息?
谢谢!
答案 0 :(得分:5)
你真的不想在那里同步加载,如果你在加载时你的UI会卡住多秒钟。如果你的主要运行循环停止时间过长(互联网连接速度慢),系统会认为你已经崩溃并杀死你的应用程序。
您希望使用UIWebViewDelegate方法,以便在执行某些操作时获得通知。例如:
myUIWebView.delegate = self;
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
然后在您实现以下委托方法:
//Called whenever the view starts loading something
- (void)webViewDidStartLoad:(UIWebView *)webView {
[busySignal startAnimating];
}
//Called whenever the view finished loading something
- (void)webViewDidFinishLoad:(UIWebView *)webView_ {
[busySignal stopAnimating];
}
答案 1 :(得分:0)
看看UIWebViewDelegate协议应该有你需要的东西,它有requestdidstart加载和那些你想要做的确切的方法