Очевидно, что есть некоторая ошибка в Замечаниях по выпуску iPhone SDK для iPhone OS 3.0 :
Проблема: UIWebView не может загружать локальные ресурсы в приложениях, созданных для версии 3.0.
При использовании [UIWebView
loadHTMLString:baseURL:]
, HTML
строка не должна ссылаться на локальную
ресурсы со схемой file://
.
Вместо этого передайте NULL
или file://
URL для baseURL:
или включите
ресурсы непосредственно в HTML с
Теги <style>
и <script>
.
Достаточно справедливо. Но передача стандартного file://
URL для baseURL
не совсем работает. Однако ... получается, что если вы измените /
на //
и пробелы на %20
, вы будете настроены! (Использование %20
имеет большой смысл, но двойная косая черта застала меня врасплох.)
Допустим, вы уже настроили NSString *markup
. Вот и все, что вы делаете. (Я обернул здесь код для удобства чтения. Вы можете реорганизовать / настроить его по вкусу.)
NSString *resourcePath = [[[[NSBundle mainBundle] resourcePath]
stringByReplacingOccurrencesOfString:@"/" withString:@"//"]
stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
[webView loadHTMLString:markup baseURL:[NSURL URLWithString:
[NSString stringWithFormat:@"file:/%@//", resourcePath]]];
До тех пор, пока ваши CSS, JavaScript и изображения упоминаются только по имени файла, это должно сработать в iPhone OS 3.0 в том, что касается loadHTMLString:baseURL:
!