Я обнаружил, что iOS 4.2 не поддерживает свойство window.orientation в UIWebView, в то время как в мобильном сафари это работает ...
Таким образом, единственный способ, которым я нашел, чтобы заставить мой JS реагировать на изменения ориентации, - это заставить мой код target-c вызывать функцию javascript, определенную на отображаемой в данный момент веб-странице UIWebView. Вот пример кода, переопределяющий метод didRotateFromInterfaceOrientation ViewController:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[webView stringByEvaluatingJavaScriptFromString:
[NSString stringWithFormat:@"didRotateTo('%@')",
[self currentOrientationAsString]]];
}
- (NSString*) currentOrientationAsString {
switch([[UIDevice currentDevice] orientation]) {
case UIDeviceOrientationLandscapeLeft:
case UIDeviceOrientationLandscapeRight:
return @"landscape";
}
return @"portrait"; // assuming portrait is default
}
Вы должны определить свою функцию Javascript следующим образом:
function didRotateTo(ori) {
if (ori=="portrait") {
// ... do something
} else {
// ... do something else
}
}
Наслаждайтесь! :)