OrientationObserver в UIWebView - PullRequest
       20

OrientationObserver в UIWebView

0 голосов
/ 24 ноября 2011

У меня следующая структура

UIViewController1 -> UIWebView

Я запускаю локальный HTML-файл в WebView из Documents-Folder.Внутри HTML у меня есть небольшой фрагмент JavaScript, который проверяет ориентацию интерфейса с помощью directionObserver.

UIViewController1 заблокирован для альбомной ориентации.

OrientationObserver всегда возвращает «портрет», должен возвращать «ландшафт».Я не знаю, что вызывает неправильное возвращаемое значение.

Что могло бы привести к тому, что directionObserver вернул неправильную ориентацию в этом созвездии?

Я действительно застрял здесь, и мне нужно получитьправильная ориентация вернулась.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 25 ноября 2011

Наконец, после четырех дней удара головой об iMac я нашел решение для этого.

В UIWebView недоступно window.orientation (интересно, почему !?).Если JavaScript запрашивает значение, он получает «0», что означает, что ориентация - «портрет».

Вы можете обойти проблему, если добавите в окно установщик «ориентации».

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {

    [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation', function(){return 90;});"];

return YES; 
}

Это реализует геттер в window, а JavaScript get возвращает его.Если вы хотите, чтобы ваше приложение реагировало на изменения ориентации интерфейса, вы можете снова установить значения в делегатах на правильные значения (-90, 0, 90 или 180).

...