1

我是 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];  
4

2 回答 2

0

这很简单:

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

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

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

于 2013-03-09T01:34:38.413 回答
0

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

于 2013-03-09T01:47:56.007 回答