如何在用户打字时打开/关闭软键盘上的文本预测



我有一个RichEditBox,我想在用户输入时打开和关闭TextPrediction。这是我正在尝试的代码,但它只是不工作。它要求键盘重新启动/重新打开以显示更改。

private void PostRichEditBox_SelectionChanged(object sender, RoutedEventArgs e)
{
     if(somecondition)
     {
           Searchterm.Text = mentionText;
           var scope = new InputScope();
           var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.NameOrPhoneNumber };
           scope.Names.Add(inputScopeName);
           PostRichEditBox.InputScope = scope;
           PostRichEditBox.IsTextPredictionEnabled = true;
      }
      else
      {
           var scope = new InputScope();
           var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.Chat };
           scope.Names.Add(inputScopeName);
           PostRichEditBox.InputScope = scope;
           PostRichEditBox.IsTextPredictionEnabled = false;
       }
}

我知道这是可以做到的,因为Rudy Huyn的6tag在输入"@"时做到了这一点,然后它显示了一个朋友建议列表,而不是键盘上的文本预测。我在推特上问他是怎么做到的。他只是通过改变inputmode(我想他指的是inputscope)来回复。我该怎么做呢?

因为即使关闭预测,预测栏也不会消失。它需要键盘关闭并重新打开以更新predictionBar,因此我做了一些更改。我现在专注于UserControl,然后回到RichEditBox。在用户体验方面,它并不明显,因为键盘永远不会折叠。

if (PostRichEditBox.IsTextPredictionEnabled)
                {
                   this.Focus(Windows.UI.Xaml.FocusState.Keyboard);
                    var scope = new InputScope();
                    var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.NameOrPhoneNumber };
                    scope.Names.Add(inputScopeName);
                    PostRichEditBox.InputScope = scope;
                    PostRichEditBox.IsTextPredictionEnabled = false;
                    PostRichEditBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
                 }

相关内容

  • 没有找到相关文章

最新更新