use*_*146 1 iphone objective-c uiwebview
我正在使用objective-c和iphone 3.0 sdk
我想检索URL(网页或pdf)的内容并在其中显示 UIWebView
似乎要做的事情是这样的:
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
Run Code Online (Sandbox Code Playgroud)
除了1件事之外,这种方法效果很好.
有些情况下请求需要一段时间(比方说5-10秒).我有一个UIActivityIndicatorView,我想在加载请求的开始和结束时"开始"和"停止".
但是,如果我这样做
[busySignal startAnimating];
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
[busySignal stopAnimating];
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为loadRequest调用是异步完成的,因此我的UIActivityIndicatorView几乎立即停止
有没有办法在URL请求的开头和结尾开始/停止我的"busySignal"?
作为替代方案,我认为这可以通过NSURLConnection完成,它给我回调函数"connectionDidFinishLoading:"
但我似乎无法弄清楚如何从NSURLConnection转到显示网页.
所以,我猜这是两个问题.
1.您可以在调用loadRequest的开头/结尾处启动/停止UIActivityIndicatorView: 2.如何使用NSURLConnection检索URL的内容并在UIWebView上显示信息?
谢谢!
你真的不想在那里同步加载,如果你在加载时你的UI会卡住多秒钟.如果您的主运行循环停止太长时间(慢速互联网连接),系统将假设您已经崩溃并杀死了您的应用程序.
您希望使用UIWebViewDelegate方法,以便在执行某些操作时获得通知.例如:
myUIWebView.delegate = self;
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
Run Code Online (Sandbox Code Playgroud)
然后在您实现以下委托方法:
//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];
}
Run Code Online (Sandbox Code Playgroud)