cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-11422) ios SplashScreen plugin may make webview disabled by not calling destroyView method
Date Mon, 07 Nov 2016 13:43:59 GMT

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

ASF GitHub Bot commented on CB-11422:
-------------------------------------

Github user jonathanli2 commented on the issue:

    https://github.com/apache/cordova-plugin-splashscreen/pull/105
  
    Close the pull request as the change in CB-10895 already handled the case by removing
the extra if condition check. Please refer to bug CB-11422 for details.
    
    Jonathan


> ios SplashScreen plugin may make webview disabled by not calling destroyView method
> -----------------------------------------------------------------------------------
>
>                 Key: CB-11422
>                 URL: https://issues.apache.org/jira/browse/CB-11422
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin SplashScreen
>    Affects Versions: 3.5.0
>         Environment: ios
>            Reporter: Jonathan Li
>
> When using ios splash screen, it is noticed sometimes, after the splash screen is dimissed,
the ios main uiwebview is disabled. So even if the content in the webview shows properly,
but user cannot click on any items on the screen.
> The project adds the splash screen plugin, and use all default settings. 
> The debug shows, when the page loaded is finished, it calls pageDidLoad method, which
calls setVisible to NO. Inside the setVisible method, in the dispatch_after block, the completion
block will only call destroyViews method if the screen transition is finished at below code
block
>     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (uint64_t) effectiveSplashDuration
* NSEC_PER_SEC), dispatch_get_main_queue(), CFBridgingRelease(CFBridgingRetain(^(void) {
>                 NSLog(@"splash screen: block %@", NSStringFromSelector(_cmd));
>                   [UIView transitionWithView:self.viewController.view
>                                    duration:(fadeDuration / 1000)
>                                    options:UIViewAnimationOptionTransitionNone
>                                    animations:^(void) {
>                                        [weakSelf hideViews];
>                                    }
>                                    completion:^(BOOL finished) {
>                                       NSLog(@"splash screen: %@ finished %d", NSStringFromSelector(_cmd),
finished);
>                                        if (finished) {
>                                            [weakSelf destroyViews];
>                                            // TODO: It might also be nice to have a js
event happen here -jm
>                                        }
>                                      }
>                     ];
>             })));
>         }
>     }
> The problem is if the webview is busy to handle other events (in the testing project,
there are several update on frame and bounds, so it calls updateImage few times), then the
transition will not be finished when completion block is called. As a result, the destroyView
will not be called and the userInteractionEnabled is not set to true after the splash screen
is dismissed.
> One possible solution is removing the observer and also enable user interaction within
setVisible method, as there is no point to continue observer the frame and bound change when
splash screen starts to fade out. And it can also be sure the user interaction is always enabled
again after dismissing the splash screen.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message