c# - UWP 无法使用自定义 OSK 在 webview 的文本框中输入数据
问题描述
我有一个在 webview 中运行的 Angular 应用程序和一个在 uwp 中运行的自定义屏幕键盘(OSK)。我无法使用自定义 OSK 在 webview 中的文本框中输入数据,尽管它对于普通的 UWP 文本框工作正常。当我单击 OSK 时,它似乎失去了焦点。
我已经尝试WebView.Focus(FocusState.Programmatic)
并调用InvokeScriptAsync
用于将焦点设置回 WebViewLostFocus
事件中的 webview 的脚本,但没有任何效果。
我也尝试使用焦点管理器。
FocusMovementResult result;
result = await FocusManager.TryFocusAsync(WebView, FocusState.Programmatic);
我正在使用InputInjector
.
inputKey.VirtualKey = ((ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), input.Text, true)));
inputInjector.InjectKeyboardInput(new[] { inputKey });
对于 OSK,该AllowFocusOnInteraction
属性也设置为 False。
<app:Keyboard x:Name="keyboard" AllowFocusOnInteraction="False"/>
解决方案
我能够通过
window.external.notify
使用事件侦听器通知 UWP 关于模糊事件并使用此通知命令将焦点设置回 webview 来解决它
webview.Focus(FocusState.Programmatic);
await webView.InvokeScriptAsync(@"eval", new string[] { "document.focus()" });
推荐阅读
- ios - 如何将 UILabel 与 UITableViewCell 的 imageView 中的 SF Symbols 和自定义图像对齐?
- python - 彩票插入排序算法
- kotlin - 有没有办法减少/删除 Kotlin 中的冗余泛型参数?
- angular - 如何正确实现 Angular Guard?
- knockout.js - Knockout DataTables Row Click After fetch data
- python - AttributeError:'str' 对象在 for 循环中没有属性 'tk'
- java - 大括号正确匹配时应为“{”
- mysql - 如何通过 xhr fetch response 防止网络请求中显示个人信息
- excel - 如果我存储了一个 IRibbonUI 对象,我可以使用它使用 VBA 代码将控件添加到功能区吗?
- java - MS Graph Java SDK 引发身份验证异常