如何在UIWebView中加载HTML对象?

时间:2013-03-09 01:25:59

标签: iphone html string url uiwebview

我是iPhone开发的新手,我正在尝试将HTML对象加载到UIWebView

问题在于,当我将HTML数据转换为字符串时,应用程序崩溃并显示EXC_BAD_ACCESS。该对象是一个brightcove视频,我直接从brightcove网站复制嵌入代码,所以我不明白为什么它不工作。非常感谢任何帮助。

代码:

NSString *brightstring = [NSString stringWithFormat:@"<html><body><object id=flashObj width=540 height=400 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0><param name=movie value=http://c.brightcove.com/services/viewer/federated_f9?isVid=1 /><param name=bgcolor value=#FFFFFF /><param name=flashVars value=videoId=%@&playerID=659636031001&playerKey=AQ~~,AAAAC59qSJk~,vyxcsD3OtBM6WfpHEsDft5laXH9ASJhF&domain=embed&dynamicStreaming=true /><param name=base value=http://admin.brightcove.com /><param name=seamlesstabbing value=false /><param name=allowFullScreen value=true /><param name=swLiveConnect value=true /><param name=allowScriptAccess value=always /><embed src=http://c.brightcove.com/services/viewer/federated_f9?isVid=1 bgcolor=#FFFFFF flashVars=videoId=%@&playerID=659636031001&playerKey=AQ~~,AAAAC59qSJk~,vyxcsD3OtBM6WfpHEsDft5laXH9ASJhF&domain=embed&dynamicStreaming=true base=http://admin.brightcove.com name=flashObj width=540 height=400 seamlesstabbing=false type=application/x-shockwave-flash allowFullScreen=true swLiveConnect=true allowScriptAccess=always pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash></embed></object></body></html>", clipid]; //<--Crashes Here

NSString* html = [NSString stringWithFormat:brightstring, 540, 400];  

[videoScreen loadHTMLString:html baseURL:nil];  

2 个答案:

答案 0 :(得分:0)

这很简单:

NSString *brightstring = [NSString stringWithFormat:@"...videoId=%@&...videoId=%@&...", clipid]; //<--Crashes Here

您的格式字符串中有%@两次,但您只传入一个参数。

我建议您从文件中加载HTML并使用-stringByReplacingOccurrencesOfString:withString:填写视频ID(使用${VIDEO_ID}等占位符。

答案 1 :(得分:0)

看起来视频是一个Flash视频,据我所知(我可能错了)但iOS不支持Flash。尝试使用其他格式,如mp4,mpv,3gp等。出于测试目的,我首先会托管.html文件(如果您有托管公司,或使用apache在本地运行),然后从手机的Web浏览器访问它。如果它在那里不起作用,那么肯定它也不会以这种方式工作。