cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Adesalu (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CB-10376) autofocus doesn't work with WKWebView engine plugin
Date Sun, 03 Jul 2016 15:25:11 GMT

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

Alan Adesalu edited comment on CB-10376 at 7/3/16 3:24 PM:
-----------------------------------------------------------

I have managed to fix this by implementing a variation of the same fix for the Telerik WKWebView.

Open CDVWKWebViewEngine.m and at the end of the updateSettings method (around line 140), add
the following:

    BOOL keyboardDisplay = !([settings cordovaBoolSettingForKey:@"KeyboardDisplayRequiresUserAction"
defaultValue:NO]);
    
    if (!keyboardDisplay) {
      SEL sel = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:userObject:");
      Class WKContentView = NSClassFromString(@"WKContentView");
      Method method = class_getInstanceMethod(WKContentView, sel);
      IMP originalImp = method_getImplementation(method);
      IMP imp = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2,
id arg3) {
       ((void (*)(id, SEL, void*, BOOL, BOOL, id))originalImp)(me, sel, arg0, TRUE, arg2,
arg3);
      });
      method_setImplementation(method, imp);
    }

This will make the keyboard pop up again if you programatically focus on a input or textarea
with KeyboardDisplayRequiresUserAction set to false.

As this is something which is preventing a large amount of people from considering this plugin,
is this something we could have included in the next release?


was (Author: alan@sparkrevolutions.com):
I have managed to fix this by implementing a variation of the same fix for the Telerik WKWebView.

Open CDVWKWebViewEngine.m and at the end of the updateSettings method (around line 140), add
the following:

    BOOL keyboardDisplay = !([settings cordovaBoolSettingForKey:@"KeyboardDisplayDoesNotRequireUserAction"
defaultValue:NO]);
    
    if (!keyboardDisplay) {
      SEL sel = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:userObject:");
      Class WKContentView = NSClassFromString(@"WKContentView");
      Method method = class_getInstanceMethod(WKContentView, sel);
      IMP originalImp = method_getImplementation(method);
      IMP imp = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2,
id arg3) {
       ((void (*)(id, SEL, void*, BOOL, BOOL, id))originalImp)(me, sel, arg0, TRUE, arg2,
arg3);
      });
      method_setImplementation(method, imp);
    }

This will make the keyboard pop up again if you programatically focus on a input or textarea
with KeyboardDisplayRequiresUserAction set to false.

As this is something which is preventing a large amount of people from considering this plugin,
is this something we could have included in the next release?

> autofocus doesn't work with WKWebView engine plugin
> ---------------------------------------------------
>
>                 Key: CB-10376
>                 URL: https://issues.apache.org/jira/browse/CB-10376
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin WKWebViewEngine
>    Affects Versions: 5.4.1
>         Environment: Tested on iPhone 6 plus and iPhone 5S both running iOS 9.2 
>            Reporter: David Douglas
>            Priority: Minor
>              Labels: iOS, triaged
>
> When using WKWebView engine the iOS Soft Keyboard fails to automatically open when the
'autofocus' attribute is set.
> How to recreate:
> 1. Add platform and keyboard plugin
> ```
> cordova platform add ios@4.0.1
> cordova plugin add cordova-plugin-keyboard@1.1.3 --save
> ```
> 2. Update iOS keyboard to enable focus commands in 'config.xml':
> ```
> <preference name="KeyboardDisplayRequiresUserAction" value="false" />
> ```
> 3. Add textarea to test with autofocus attribute.
> ```
> <textarea placeholder="Edit text" autofocus></textarea>
> ```
> (Note: Before adding the WKWebView engine plugin the UIWebView will automatically open
the Soft Keyboard.)
> 4. Add the WKWebView engine plugin
> ```
> cordova plugin add cordova-plugin-wkwebview-engine@1.0.1 --save
> ```
> What happens:
> Nothing.
> What should happen:
> The soft keyboard should open automatically (the same a UIWebView)



--
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