如何在加载UIWebView时使用UIProgressView?

raa*_*aaz 11 iphone uiprogressview

我正在开发一个应用程序,我在UIWebView中加载urlrequest,它发生成功.

但是现在我正在尝试在加载过程中显示UIProgressView(从0.0开始到1.0),随着加载的进度动态地改变.

我怎样才能做到这一点?

Kev*_*man 22

UIWebView在正常模式下不会提供任何进度信息.您需要做的是首先使用NSURLConnection异步获取数据.当NSURLConnection委托方法时connection:didReceiveResponse,您将获取您获得的数字expectedContentLength并将其用作最大值.然后,在委托方法中connection:didReceiveData,您将使用lengthNSData实例的属性来告诉您离您有多远,因此您的进度分数将被length / maxLength归一化到0.0到1.0之间.

最后,您将使用数据而不是URL(在您的connection:didFinishLoading委托方法中)初始化webview .

两个警告:

  1. expectedContentLengthNSURLResponse 的属性可能是-1(NSURLReponseUnknownLength常量).在这种情况下,我建议抛出一个你关闭的标准UIActivityIndi​​cator connection:didFinishLoading.

  2. 确保每次从NSURLConnection委托方法之一操作可见控件时,都可以通过调用来执行此操作performSelectorOnMainThread:- 否则您将开始获得可怕的EXC_BAD_ACCESS错误.

使用这种技术,当你知道你应该获得多少数据时,你可以显示一个进度条,当你不知道时,你可以显示一个微调器.