我有一个在webview中运行的角度应用程序,在uwp中运行一个自定义屏幕键盘(OSK(。我无法使用自定义 OSK 在 Web 视图中存在的文本框中输入数据,尽管它适用于普通 UWP 文本框。当我单击OSK时,它似乎失去了焦点。
我已经尝试使用InvokeScriptAsync
WebView.Focus(FocusState.Programmatic)
和调用脚本,以将焦点设置回 WebViewLostFocus
事件中的 Web 视图,但没有任何效果。
我也尝试使用焦点管理器。
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"/>
我能够通过通知 UWP 来解决它window.external.notify
有关使用事件侦听器的模糊事件的信息,并使用此通知命令将焦点设置回 Web 视图
webview.Focus(FocusState.Programmatic);
await webView.InvokeScriptAsync(@"eval", new string[] { "document.focus()" });