gpt4 book ai didi

c# - windows phone 8.1 swype 键盘事件捕获

转载 作者:太空狗 更新时间:2023-10-29 21:44:34 24 4
gpt4 key购买 nike

更新 [2014 年 7 月 16 日]:这个问题在技术上是不正确的。阅读答案以获取更多详细信息。


我试图在到达我的文本框之前捕获文本。我发现了以下事实:

  • KeyDown , KeyUp事件会告诉你什么virtualKey被按下不是角色!!

  • CoreWindow.CharacterReceived将捕获角色,但这
    事件不是特定于 TextBox 的,它会告诉你字符
    到达文本框后。

现在我的问题是:

谁能告诉我如何捕捉 Windows Phone 8.1 上的 Swype 键盘事件? enter image description here

注意:

1- 我试图在 TextBox.Paste 中捕获它,但它失败了:(

2- 事件 textBox.textChanged()不是我要找的,因为事件在键盘完成后触发,并且此事件 (textChanged) 将在 keyDown 后触发, keyUp , CharacterReceived不管文本是如何输入的。

最佳答案

好的!我已经在这个问题上好几天了,并对其进行了广泛的测试以理解并得出以下结论:

1- 来自键盘的输入由名为 (CharacterRecieved) 的页面的事件处理。事件被页面触发并捕获,然后发送到 TextBox 并将导致触发 TextChanged 事件。

2- 如果您以 winForms 的心态来使用 winRT 和 Windows Phone,您肯定会感到困惑,并且需要一些时间来弄清楚 [除非您阅读了这个答案,这会使它更短]。

3- 不要指望 [正如我错误地预期的那样] 输入字符的事件会在 TextBox 中触发。它会在页面 (CoreWindow) 上触发,然后更改文本框的文本值,因此您必须在页面级别捕获事件,而不是在控件级别。

4- 键盘输入一个字母和swype键盘输入一个单词的区别:

**

  • 在手机键盘输入一个字母的情况下,以下顺序很可能会发生:

**

假设 textBox.Text = "99";

现在我将按数字 7:

1- KeyDown 事件将触发:在这里您可以捕获 virtualKey 但您将无法知道该字符,因此按“a”字母您可以'知道它是'A'大写还是'a'小写。还是 textBox.Text = "99";
2- CharacterRecieved 火; textBox.Text = "997";
3- KeyUp 事件触发; textBox.Text = "997";
4- textChanged 触发。; textBox.Text = "997";

  • 如果是 swype 键盘:

假设 textBox.Text = "99";我想输入文字“你好”;

swype 会在单词前添加空格,所以它会是“你好”

事件顺序如下:

1- 字符串“hello”中每个字符的循环将触发事件 CharacterRecieved 并且 textBox.Text 值将为 textBox.Text= “99” 在第一次迭代中;然后从第二次迭代 textBox.Text = "99 hello";在每次迭代中,您都可以捕获 key code [char],在本例中为 (32, 110, 101, 108,108, 111)。请注意,现在 textBox.Text 值已更改,但尚未显示在屏幕上!!

2- textChanged 事件将触发两次(很奇怪!!我认为一次用于空白,第二次用于单词“hello”),此外,现在是 textBox。 Text = "99 hello" 但在 textChanged 事件的两次迭代结束之前仍未显示在屏幕上。

有了这个,我们开始注意到 swype 和普通键盘按键事件之间的区别,在 swype 中根本没有 keyDown keyUp 事件!!

现在,如果您知道每种键盘输入方法(swype/非 swype)的场景,您就可以根据需要规划您的验证和应用程序行为。前提是您知道它与旧版 Windows 系统输入完全不同。

我希望这会帮助那里的人,并为他/她节省许多时间的困惑和痛苦:)

关于c# - windows phone 8.1 swype 键盘事件捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com