我已经花了几十个小时试图解决这个问题 - 也许社区可以帮助我。
我正在使用krpano脚本开发全景应用。它使用六个方形图像将立方体全景嵌入UIWebView
中。客户希望他们具有高分辨率。我应该使用2048x2048瓷砖。有了这样的资源,webview加载得很好,一切都很快,很酷。但是当我关闭视图并再次打开它时,应用程序崩溃并出现以下错误:
由于未捕获的异常终止应用程序' NSRangeException',原因:' - [WebCoreSharedBufferData getBytes:range:]:range {0, 4000}超过数据长度0'
我尝试了很多事情 - 在[webView reload]
上调用-viewWillDisappear
,尝试加载空白页面,触发了将document.body.innerHTML
设置为空值的javascript,实施者-didReceiveMemoryWarning
- 几十件事,但没有任何帮助。
唯一可行的方法是使用分辨率更小的瓷砖:512x512像素。但它们质量很差,所以它没有任何帮助。
这是我目前的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIWebView *webV = [[UIWebView alloc] initWithFrame:self.view.frame];
[self.view addSubview:webV];
webV.delegate = self;
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"krpano"
ofType:@"html" inDirectory:@"old"];
NSURL *url = [NSURL fileURLWithPath:filePath];
[webV loadRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]];
}
我已经清除了之前解决问题的任何尝试。我在iPhone 5和iPhone 4上测试应用程序 - 在两台设备上都崩溃了。模拟器工作正常,没有任何问题。
那么,在这种情况下我该怎么办?我非常高兴能得到任何帮助!
更新:即使使用512x512磁贴,如果应用的大小超过100kb,也会崩溃。每块瓷砖都可以正常使用1-10kb。