cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shazron <shaz...@gmail.com>
Subject Re: iOS: shouldRotateToOrientation javascript handler
Date Fri, 05 Jul 2013 17:10:50 GMT
CDVInAppBrowser kinda does this already (hook into orientation changes)
https://github.com/apache/cordova-ios/blob/2.9.0/CordovaLib/Classes/CDVInAppBrowser.m#L730-L756
https://github.com/apache/cordova-ios/blob/2.9.0/CordovaLib/Classes/CDVInAppBrowser.m#L99-L101
https://github.com/apache/cordova-ios/blob/master/CordovaLib/Classes/CDVScreenOrientationDelegate.h
https://github.com/apache/cordova-ios/blob/master/CordovaLib/Classes/CDVViewController.h#L30


On Fri, Jul 5, 2013 at 10:04 AM, Shazron <shazron@gmail.com> wrote:

> +1. We planned to make this cross-platform sometime ago, but nothing came
> of it (see comments): https://issues.apache.org/jira/browse/CB-751
>
>
>
> On Fri, Jul 5, 2013 at 9:58 AM, Michal Mocny <mmocny@chromium.org> wrote:
>
>> Yes, the use cases are real, but I thought it was odd that we only have it
>> for iOS.  Also odd that there is overhead for every rotation for every
>> app,
>> regardless of using this feature.  We could perhaps add a config.xml flag
>> to disable it by default, but its probably best to just replace it
>> altogether with a plugin that works on multiple platforms.
>>
>>
>> On Fri, Jul 5, 2013 at 12:51 PM, Shazron <shazron@gmail.com> wrote:
>>
>> > If we have a suitable replacement to point users to - I'm all for it.
>> The
>> > use case for this is if a user has an app that is portrait only, but
>> needs
>> > to display something (video?) in landscape thus "overriding" the app
>> > default.s
>> >
>> >
>> > On Fri, Jul 5, 2013 at 9:11 AM, Michal Mocny <mmocny@chromium.org>
>> wrote:
>> >
>> > > Yeah, sorry, I meant the JS method: window.shouldRotateToOrientation
>> is
>> > > undocumented and not supported on other platforms.
>> > >
>> > >
>> > > On Fri, Jul 5, 2013 at 11:47 AM, Andrew Grieve <agrieve@chromium.org>
>> > > wrote:
>> > >
>> > > > I think he means it's undocumented within Cordova's docs.
>> > > >
>> > > >
>> > > > On Fri, Jul 5, 2013 at 11:20 AM, Ian Clelland <iclelland@google.com
>> >
>> > > > wrote:
>> > > >
>> > > > > I'm not sure what you mean by "Undocumented" in this case --
it's
>> > not a
>> > > > > private API that would get you booted from the App Store; it's
a
>> > > > documented
>> > > > > method on UIView, although it's been deprecated recently.[1]
>> > > > >
>> > > > > Agreed that supporting the screen-orientation spec is probably
the
>> > way
>> > > to
>> > > > > go in the future, on any platforms that can support it.
>> > > > >
>> > > > > [1]
>> > > > >
>> > > > >
>> > > >
>> > >
>> >
>> http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#jumpTo_9
>> > > > >
>> > > > >
>> > > > > On Fri, Jul 5, 2013 at 10:18 AM, Michal Mocny <mmocny@google.com>
>> > > wrote:
>> > > > >
>> > > > > > iOS seems to have an undocumented "feature" to call into
>> javascript
>> > > > > before
>> > > > > > every device orientation change (pasted below for your viewing
>> > > > pleasure).
>> > > > > >
>> > > > > > I can't find any such similar functionality on other platforms,
>> > > should
>> > > > it
>> > > > > > be removed?  Likely we will want to write a screen orientation
(
>> > > > > > http://www.w3.org/TR/screen-orientation/) plugin instead
>> > > (eventually).
>> > > > > >
>> > > > > >
>> > > > > > -
>> > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
>> > > > > > {
>> > > > > >     // First, ask the webview via JS if it supports the
new
>> > > orientation
>> > > > > >     NSString* jsCall = [NSString stringWithFormat:
>> > > > > >         @"window.shouldRotateToOrientation &&
>> > > > > > window.shouldRotateToOrientation(%d);"
>> > > > > >         , [self
>> > > > mapIosOrientationToJsOrientation:interfaceOrientation]];
>> > > > > >     NSString* res = [webView
>> > > > > > stringByEvaluatingJavaScriptFromString:jsCall];
>> > > > > >
>> > > > > >     if ([res length] > 0) {
>> > > > > >         return [res boolValue];
>> > > > > >     }
>> > > > > >
>> > > > > >     // if js did not handle the new orientation (no return
>> value),
>> > > use
>> > > > > > values from the plist (via supportedOrientations)
>> > > > > >     return [self supportsOrientation:interfaceOrientation];
>> > > > > > }
>> > > > > >
>> > > > > > -Michal
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message