我已经添加了要在 UIWebview 中加载的 html 文件,并且它工作正常。然后(UIWebview)滚动更快延迟加载文本,它在滚动更快时出现白色背景。我想在滚动速度更快的同时删除白色背景。
是否可以在 timw 加载 UIActivityIndicatorView,请帮帮我
提前致谢
我想我找到了问题所在。看起来 NSURLRequestReturnCacheDataElseLoad 和 NSURLRequestReturnCacheDataDontLoad 在 iPhone 上被破坏了。当从缓存返回一个 NSCachedURLResponse 并且它包含指示内容已过期的 HTTP 标头(例如 Expires、Cache-Control 等)时,缓存的响应将被忽略,并向原始源发出请求。
解决方法如下:
实现你自己的 NSHTTPURLResponse 子类,它允许你修改 allHeaderFields 字典。实现您自己的 NSURLCache,覆盖 cachedResponseForRequest: 并返回一个新的 NSCachedURLResponse ,其中包含您的 NSHTTPURLResponse 子类的实例,其中相关的“过期”HTTP 标头被剥离。
因为 UIScrollview 中的事件跟踪阻塞了主线程。
您可以尝试在另一个 Web 操作之前强制 scrollView 结束滚动(或减速)。
我玩了一下你原来的解决方案,这似乎工作得很好。我认为您几乎拥有它,但是您只是抵消了您使用过多的矩形,而忘记了您可以将矩形直接滚动回原始矩形。
任何滚动动作的通用解决方案是这样的:
- (void)killScroll
{
CGPoint offset = scrollView.contentOffset;
offset.x -= 1.0;
offset.y -= 1.0;
[scrollView setContentOffset:offset animated:NO];
offset.x += 1.0;
offset.y += 1.0;
[scrollView setContentOffset:offset animated:NO];
}
[编辑] 从 iOS 4.3(可能更早)开始,这似乎也有效
- (void)killScroll
{
CGPoint offset = scrollView.contentOffset;
[scrollView setContentOffset:offset animated:NO];
}