【问题标题】:How to hide Windows Phone 8.1 soft keyboard effectively?如何有效隐藏 Windows Phone 8.1 软键盘?
【发布时间】:2014-10-31 16:36:09
【问题描述】:

我想在点击 Enter 键时隐藏软键盘,但没有适合我的解决方案。 (Windows Phone 8.1 通用应用)

这个不行:

if (e.Key == VirtualKey.Enter)
{
    textBox.IsEnabled = false;
    textBox.IsEnabled = true;
}

这样的方法:

private void LoseFocus(object sender)
{
    var control = sender as Control;
    var isTabStop = control.IsTabStop;
    control.IsEnabled = false;
    control.IsTabStop = false;
    control.IsEnabled = true;
    control.IsTabStop = isTabStop;
}

仅部分起作用。只有当我第一次使用文本框时它才会隐藏键盘。在第二次重新出现键盘时。

【问题讨论】:

  • 请记住,如果您在同一方法中关闭并重新打开IsEnabled,则在该方法完成之后之前,表单不会注册您的更改。您可以在方法中随意切换值,但只有函数完成后的结果才是重要的。

标签: c# xaml windows-phone-8.1 soft-keyboard


【解决方案1】:

有直接的 API 支持来隐藏和显示 InputPane。您无需尝试伪造系统。

Windows Phone 8.1 上提供了 Windows.UI.ViewManagement.InputPane.TryShowTryHide 方法。

另一种选择是在用户按 Enter 键时将焦点移至更合适的控件。

【讨论】:

    【解决方案2】:

    这是当用户按下回车键时隐藏键盘的完整代码

      private void TextBox_KeyUp(object sender, KeyRoutedEventArgs e)
        {
            if(e.Key==Windows.System.VirtualKey.Enter)
            {
                Windows.UI.ViewManagement.InputPane.GetForCurrentView().TryHide();
            }
        }
    

    【讨论】:

      【解决方案3】:

      我刚刚做了类似的事情,它正在工作:

      private async void makeRequest(string title, int page)
          {
              myTextBox.IsEnabled = false;
              myTextBox.IsTabStop = false;
              // here is my httprequest and changing itemssource of listview
              myTextBox.IsEnabled = true;
              myTextBox.IsTabStop = true;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多