[ 
https://issues.apache.org/jira/browse/CB-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13202976#comment-13202976
 ] 

Shazron Abdullah commented on CB-221:
-------------------------------------

Wow - major bug here - good catch Adam. 

In PGViewController, didRotateToInterfaceOrientation is totally missing - so 
the orientationchange event will not be fired at all. I found the culprit by 
backtracking why PhoneGap.fireEvent was never called for an orientation change. 
In iOS 5 it works because by the UIWebView has this event built-in. This is 
currently broken for iOS 3 and 4.

The patch is to add this to PGViewController.m:

{code}
/**
 Called by UIKit when the device starts to rotate to a new orientation.  This 
fires the \c setOrientation
 method on the Orientation object in JavaScript.  Look at the JavaScript 
documentation for more information.
 */
- (void)didRotateFromInterfaceOrientation: 
(UIInterfaceOrientation)fromInterfaceOrientation
{
        int i = 0;
        
        switch (self.interfaceOrientation){
                case UIInterfaceOrientationPortrait:
                        i = 0;
                        break;
                case UIInterfaceOrientationPortraitUpsideDown:
                        i = 180;
                        break;
                case UIInterfaceOrientationLandscapeLeft:
                        i = -90;
                        break;
                case UIInterfaceOrientationLandscapeRight:
                        i = 90;
                        break;
        }
        
        NSString* jsCallback = [NSString 
stringWithFormat:@"window.__defineGetter__('orientation',function(){ return %d; 
}); PhoneGap.fireEvent('orientationchange', window);",i];
        [self.webView stringByEvaluatingJavaScriptFromString:jsCallback];
    
}

{code}
                
> iOS Orientation Change Doesn't Resize WebView Width to Fully Fit Screen - iOS 
> Simulator 4.2, 4.3
> ------------------------------------------------------------------------------------------------
>
>                 Key: CB-221
>                 URL: https://issues.apache.org/jira/browse/CB-221
>             Project: Apache Callback
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 1.4.0
>         Environment: Mac OS X Version 10.6.8. xCode 4.2. Sencha Touch 1.1
>            Reporter: Adam Arsenault
>            Assignee: Shazron Abdullah
>              Labels: iOS4, patch
>
> I am using Sencha Touch 1.1 inside Phonegap 1.4.1 and the recent iOS 
> orientation change fix works for me when using the iPhone 5.0 simulator but 
> DOES NOT work as expected for me in older simulators like 4.2 or 4.3.
> Debugging Info:
> I am noticing that when using the older simulators, ie 4.2, 4.3 the inner web 
> view does not seem to resize to the full width. I attached an on window 
> resize event inside my app and for both portrait and landscape orientations, 
> the width is 320 instead of being 320 for portrait and 480 for landscape. The 
> height does change though. I am seeing 300 for landscape and 460 for portrait.
> I upgraded from phonegap 1.0 today and this was working as expected in 1.0.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to