захват события клавиатуры swype Windows phone 8.1

Update [16-Jul-2014]: вопрос технически некорректен. Читать ответ, чтобы получить более подробную информацию.


Я пытался захватить текст, прежде чем добраться до моего текстового поля. и я обнаружил следующие факты:--11-->

  • KeyDown, KeyUp событие скажет вам, что не характер !!

  • CoreWindow.CharacterReceived захватит характер, но это
    событие не относится к TextBox и он скажет вам характер
    после того, как он достиг текстового поля.

теперь мой вопрос:

может ли кто-нибудь сказать мне, как я могу захватить событие клавиатуры Swype на windows phone 8.1? enter image description here

обратите внимание, что :

1-я попытался захватить его в текстовом поле.Вставить, но это не удается : (

2 - событие textBox.textChanged() это не то, что я ищу, потому что это событие после того, как клавиатура сделана, и это событие (textChanged) будет стрелять после keyDown, keyUp, CharacterReceived независимо от того, как текст был введен.

1 ответов


ОК! Я был в этом вопросе в течение нескольких дней и тщательно протестировал его, чтобы понять, и пришел к следующим выводам:

1 - ввод с клавиатуры обрабатывается событием страницы с именем (CharacterRecieved). событие запускается и захватывается страницей, а затем отправляется в TextBox и приведет к стрельбе TextChanged событие.

2-Если вы приходите в winRT и Windows phone с менталитетом winForms, у вас наверняка будет путаница, которую я имел, и возьму некоторое время, чтобы понять это [если вы не прочитаете этот ответ, который сделает его короче].

3-Не ожидайте [ как я ложно ожидал ], что событие введенного символа будет срабатывать в текстовом поле. Он будет срабатывать на странице (CoreWindow), а затем изменяет текстовое значение текстового поля, поэтому вы должны поймать событие на уровне страницы, а не на уровне управления.

4 - разница между вводом одной буквы с помощью клавиатуры и вводом одного слова с помощью клавиатуры swype:

**

  • в случае одной буквы, введенной клавиатурой на телефоне, следующая последовательность будет в эти выходные. скорее всего произошло:

**

предположим textBox.Text = "99";

теперь я нажму цифру 7:

1- KeyDown событие будет стрелять: здесь вы можете захватить virtualKey но вы не сможете узнать характер, поэтому нажатие " a "буква, которую вы не можете знать, это" a "capital или "a" маленький. еще textBox.Text = "99";
2- CharacterRecieved пожар; textBox.Text = "997";
3- KeyUp противопожарные мероприятия; textBox.Text = "997";
4- textChanged пожар.; textBox.Text = "997";

  • в то время как в случае swype-keyboard:

предположим textBox.Text = "99"; и я хочу ввести текст "Hello";

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-The textChanged событие выстрелит дважды (странно !! я думаю, один на пробел и второе слово "здравствуйте"), кроме того, сейчас the textBox.Text = "99 hello" но все еще не отображается на экране до конца двух итераций над событием textChanged.

С этим мы замечаем разницу между swype и обычными событиями клавиш клавиатуры, которая заключается в том, что в swype нет keyDown keyUp события вообще !!

теперь, если вы знаете сценарии с каждым методом ввода клавиатуры (swype/non-swype), вы можете планировать свою проверку и поведение приложения, как вы хотите. при условии, что вы знаете это полностью отличается от устаревшего системного ввода windows.

я надеюсь, что это поможет кому-то там и спасти его / ее много часов путаницы и агонии:)