背景:在我的Winform中使用了CefSharp goodle浏览器,在触摸屏下,点击输入框无法自动弹出软键盘;
但是相同的网址在浏览器中打开,点击输入框时,会自动弹出软键盘。请参考下面的图片:
如上面的图片所示,我使用的是触摸屏,没有键盘,第一张图是在主流浏览器打开的,一旦点击输入框立马弹出软键盘;但是在嵌套的CefSharp 浏览器中却不行。
恳请各位指点,有什么解决方案呢?谢谢!
背景:在我的Winform中使用了CefSharp goodle浏览器,在触摸屏下,点击输入框无法自动弹出软键盘;
但是相同的网址在浏览器中打开,点击输入框时,会自动弹出软键盘。请参考下面的图片:
如上面的图片所示,我使用的是触摸屏,没有键盘,第一张图是在主流浏览器打开的,一旦点击输入框立马弹出软键盘;但是在嵌套的CefSharp 浏览器中却不行。
恳请各位指点,有什么解决方案呢?谢谢!
这个问题的出现在Github CefSharp
的ISSURE有提到过:
https://github.com/cefsharp/CefSharp/issues/1691
跟版本有关系。
解决方案
当时被认可的解决方案
CefSettings settings = new CefSettings();
settings.CefCommandLineArgs.Add("disable-usb-keyboard-detect", "1");
Cef.Initialize(settings);
2、这样每次触摸输入字段时,都会弹出 Windows OnScreen-Keyboard。注意:使用 Cef v47.0.4 测试并安装 Chrome v60.0.3112.101。
这个是当时被认可的方法答案,你可以去试下这个方法对你是否起作用。
如果不行的话,你可能还需要对版本进行降级。
因为按照这个Issure 本年3月份最新的回复,官方的回答还是参考这个方法进行操作。
也就是说 目前 cef可能还不支持最新版本的chrome浏览器
如果上述方法不生效
或许你可以试下这个方法:
(这个方法不确定是否有效,因为没有人点赞,是写问题的人最后自己回答的答案,你可以试下)
浏览器设置
CefSharpSettings.ShutdownOnExit = true;
CefSettings settings = new CefSettings();
settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
settings.CefCommandLineArgs["print-preview"]= "disable";
Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
键盘调用
ScreenKeyboard.Invoke(new Action(() =>
{
ScreenKeyboard.Visible = (task.Exception == null && task.Result);
}));
如有问题及时沟通