iPhone UIWebView локальных ресурсов с использованием Javascript и обработки onorientationChange

Используйте вместо этого BufferedWriter.newLine() , которые:

Записывает разделитель строк. Строка разделителя строк определяется системным свойством line.separator и не обязательно является одним символом новой строки ('\n').

blockquote>

29
задан Dougnukem 9 May 2009 в 18:47
поделиться

4 ответа

Ответ может можно отследить из предупреждения, которое я получал в XCode:

предупреждение: нет правила для обработки файла '$ (PROJECT_DIR) /html/orientation.js' типа sourcecode.javascript для архитектуры i386

Настройка XCode * .js javascript так как некоторый тип исходного кода необходимо было скомпилировать в приложении, когда я хотел включить его в качестве ресурса, поэтому я решил это, выполнив 2 действия.

  1. Выберите файл .js и в представлении «Подробности» отмените выбор столбца «яблочко», указывающего это скомпилированный код
  2. В представлении «Группы и файлы» разверните дерево «Цели» и разверните приложение, затем перейдите в «Копировать ресурсы пакета» и перетащите *.js файлы в него

На форумах разработчиков Apple опубликовано решение:

Похоже, вы начинаете "Xcode считает, что .js - это вещи быть скомпилированным ». В основном, Xcode считает, что сценарий должен как-то запускаться или компилироваться, поэтому отмечает это как часть исходного кода. Источник код, конечно, не копируется в ресурсы.

Итак, вам нужно сделать две вещи - выбрать файл .js в своем проекте и включите снимите флажок, который указывает, что он составлен ("яблочко" колонка). Если вы этого не сделаете, вы получить предупреждение в журнале сборки о невозможность скомпилировать файл (что должно быть вашим первым предупреждением - всегда пытаюсь понять и и исправьте любое предупреждение, что появятся в вашей сборке).

Затем перетащите его и поместите в target "Копировать ресурсы пакета".

47
ответ дан 28 November 2019 в 00:55
поделиться

Ответ на вашу вторую проблему с обработчиком onorientationchange, который не вызывается в UIWebView:

Я заметил, что свойство window.orientation не работает должным образом и обработчик window.onorientationchange не вызывается. Большинство приложений страдают этой проблемой. Это можно исправить, установив свойство window.orientation и вызвав window.onorientationchange в методе willRotateToInterfaceOrientation контроллера представления, который содержит ваш UIWebView:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    switch (toInterfaceOrientation)
    {
        case UIDeviceOrientationPortrait:
            [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation',function(){return 0;});window.onorientationchange();"];
            break;
        case UIDeviceOrientationLandscapeLeft:
            [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation',function(){return 90;});window.onorientationchange();"];
            break;
        case UIDeviceOrientationLandscapeRight:
            [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation',function(){return -90;});window.onorientationchange();"];
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation',function(){return 180;});window.onorientationchange();"];
            break;
        default:
            break;
    }
}
24
ответ дан 28 November 2019 в 00:55
поделиться

Я нашел дополнительную информацию по использованию UIWebView с локальными ресурсами.

Я собрал их вместе в коротком блоге. Если кому-то интересно, есть рабочий пример, который можно скачать.

http://mentormate.com/blog/iphone-uiwebview-class-local-css-javascript-resources/

3
ответ дан 28 November 2019 в 00:55
поделиться

Лучше использовать

  • (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation

, так как safari на самом деле вызывает directionChange ПОСЛЕ поворота представления.

Это было важно для меня, потому что мне нужно было изменить размер своих холстов HTML5 ПОСЛЕ поворота страницы, и я знал, насколько велик его контейнер.

6
ответ дан 28 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: