захват события клавиатуры swype Windows phone 8.1
Update [16-Jul-2014]: вопрос технически некорректен. Читать ответ, чтобы получить более подробную информацию.
Я пытался захватить текст, прежде чем добраться до моего текстового поля. и я обнаружил следующие факты:--11-->
KeyDown
,KeyUp
событие скажет вам, что не характер !!CoreWindow.CharacterReceived
захватит характер, но это
событие не относится к TextBox и он скажет вам характер
после того, как он достиг текстового поля.
теперь мой вопрос:
может ли кто-нибудь сказать мне, как я могу захватить событие клавиатуры Swype на windows phone 8.1?
обратите внимание, что :
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.
я надеюсь, что это поможет кому-то там и спасти его / ее много часов путаницы и агонии:)