- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
更新 [2014 年 7 月 16 日]:这个问题在技术上是不正确的。阅读答案以获取更多详细信息。
我试图在到达我的文本框之前捕获文本。我发现了以下事实:
KeyDown
, KeyUp
事件会告诉你什么virtualKey
被按下不是角色!!
CoreWindow.CharacterReceived
将捕获角色,但这
事件不是特定于 TextBox 的,它会告诉你字符
到达文本框后。
现在我的问题是:
谁能告诉我如何捕捉 Windows Phone 8.1 上的 Swype 键盘事件?
注意:
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";
假设 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/
是否可以知道用户正在使用的键盘?如何检查用户是否使用 Swype 键盘? 最佳答案 您可以使用以下方法检索当前的默认键盘: String currentKeyboard = Settings.Sec
最近我在 iOS 中遇到了一个问题,即在点击文本框时强制关闭应用程序。首先,我认为这与 Ionic View 有关,所以我使用 Xcode 构建了该应用程序。仍然有同样的问题。我开始深入研究设备控制台
我有 2 个线性布局。一个包含 ListView ,另一个包含 EditText。当我在 EditText 中输入时,swype 键盘重叠在上面。我怎样才能使 EditText float ? (意味
我正在我的应用中实现导航 View 。 实际上,我可以通过单击“汉堡包”图标(在我的工具栏中)和从左向右滑动来打开它。 我只想通过禁用 swype 的工具栏中的图标打开它。有可能吗? DrawerLa
更新 [2014 年 7 月 16 日]:这个问题在技术上是不正确的。阅读答案以获取更多详细信息。 我试图在到达我的文本框之前捕获文本。我发现了以下事实: KeyDown , KeyUp事件会告诉你什
我正在尝试使用 c# 在 Windows 窗体中创建类似 swype 的键盘 我有两个问题:A。我无法重现手指滑动 Action 。b.我无法识别不同键下的字母。 对于第一个问题: 我使用了 Grap
我有一个可以在模拟器和 Droid 手机上运行的应用程序。在 LG Optimus(BTW 安装了 Swype)上进行测试时,它崩溃并显示以下堆栈跟踪(注意:它在 EditText 的构造函数中)。
我想知道如何创建自定义弹出窗口,如下面的屏幕截图(借自 Swype 键盘),我可以在其中有几个按钮,每个按钮向当前“已连接”提交一个字符串"TextView(通过 InputConnection)。
我正在实现一个用于从用户获取 rtsp URI 的 EditText。虽然这在功能上不是一个大问题,但我想禁用屏幕键盘的默认行为,其中为每个句子的第一个字符启用大写键的状态。据我所知,这不能通过 an
我是一名优秀的程序员,十分优秀!