我的iPhone应用程序中有一个简单的UIWebView,它加载了一些嵌入了SGV的XHTML文档。这一切都可以在Safari的桌面版本上找到,但它会在UIWebView中崩溃。
这是目标C:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"];
NSData *fileData = [NSData dataWithContentsOfFile: path];
[svgView loadData: fileData MIMEType: @"text/xml" textEncodingName: @"UTF-8" baseURL: [NSURL fileURLWithPath: path]];
我还尝试了一个MIMEType的application / xhtml + xml,但它没有帮助。
这是HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XTech SVG Demo</title>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg">
<g style="fill-opacity:0.7;">
<circle cx="6.5cm" cy="2cm" r="100" style="fill:red; stroke:black; stroke-width:0.1cm" transform="translate(0,50)" />
<circle cx="6.5cm" cy="2cm" r="100" style="fill:blue; stroke:black; stroke-width:0.1cm" transform="translate(70,150)" />
<circle cx="6.5cm" cy="2cm" r="100" style="fill:green; stroke:black; stroke-width:0.1cm" transform="translate(-70,150)"/>
</g>
</svg>
</body>
</html>
所有非常基本的东西。然而,当它在iPhone上加载时,它会因此错误而崩溃:
2010-03-31 10:37:10.252 ColorDoodle [2014:20b] - [DOMElement structuralComplexityContribution]:无法识别的选择器发送到实例0x3e51b60 2010-03-31 10:37:10.253 ColorDoodle [2014:20b]由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [DOMElement structuralComplexityContribution]:无法识别的选择器发送到实例0x3e51b60'
知道为什么吗?这是UIWebView的渲染引擎中的错误吗?我在这里看不出太奇怪的事。
*已更新*
这里肯定会发生一些棘手的问题。
如果我在标签内添加这段代码,它可以正常工作:
<form>
</form>
取回该代码,然后再次崩溃。
答案 0 :(得分:1)
我一直在努力解决这个问题。添加<form></form>
标签对我来说没有任何区别,并且该错误至少持续到OS 3.1.3,从我在iPhone模拟器中的测试来判断。
但是,我找到了一个简单的解决方法,即使用<img />
属性的data:
URI在src
代码中显示SVG标记。
您可以对SVG标记进行Base64或URL编码。不出所料,它在URL编码时gzips更好。 (事实上,如果你将HTML作为text/html
提供服务,只要你没有用错误的引号标记结束src
属性,你就可以在没有编码SVG的情况下侥幸逃脱在SVG里面。)
答案 1 :(得分:0)
看起来像WebKit中的一个错误。不应该发生。归档吧。