2

我想检查软件键盘是否在 Windows Phone 8 中打开。我发现一些稀疏信息表明这可以使用 CoreWindow.IsKeyboardInputEnabled,但我找不到任何方法来实现这一点。我找到了仅适用于 C++ 的示例代码,我完全不明白。

我使用 VB,但是我可以阅读 C# 足以弄清楚我是否可以获得 C# 示例。

无论我做什么,我总是得到一个 null/nothing 值。以下代码编译并运行,但当应用程序在 if c.IsKeyboarInputEnabled... 行崩溃时, c 是“无”。

Dim c as CoreWindow
c = CoreWindow.GetForCurrentThread
if c.IsKeyboardInputEnabled then...

我知道我需要给'c'一个值,但不知道如何。我也试过:

Dim c as CoreWindow = New CoreWindow

编辑器将其标记为错误,因此不会编译。

如果它是相关的,我想做的是确保我的导航是一致的。目前,点击特定屏幕元素应关闭该元素。但是,如果键盘处于打开状态,我希望该轻按以简单地关闭键盘并使轻按的项目保持打开状态。我相信这对用户来说是更直观和一致的方法。

我认为实现此功能的唯一方法是在确定如何处理任何打开的面板之前知道键盘是否打开。

例如[当点击屏幕并展开弹出窗口时]

If [keyboard visible] then [close keyboard] else [close tapped item]

4

1 回答 1

0

我认为没有任何官方 API 可以检测 SIP 的打开和关闭,但一种解决方法可能是检查您的任何 TextBox 是否具有焦点。

您可以通过为每个 TextBox 覆盖 GetFocus 和 LostFocus 来做到这一点。

要关闭键盘,只需将焦点设置到 ContentPanel(或任何其他网格)。

让我知道这个是否奏效。

于 2014-07-01T07:07:25.980 回答