У меня есть пользовательская поисковая активность, которая служит для поиска предложений.Я получаю ссылку на поле ввода поиска и устанавливаю обработчик:
mSearchInput = FindViewById(Resource.Id.searchBoxInput) as EditText;
mSearchInput.KeyPress += new System.EventHandler<View.KeyEventArgs>(OnSearchKeypress);
Это обработчик, который должен вызываться при каждом нажатии клавиши:
private void OnSearchKeypress(object sender, View.KeyEventArgs e) {
string query = mSearchInput.Text;
if (e.KeyCode == Keycode.Enter && !string.IsNullOrEmpty(query)) {
e.Handled = true;
// launch search results activity
}
else {
e.Handled = false;
if (query.Length > 2) {
// load suggestions if we have 2+ characters
}
}
}
По какой-то причине, напрограммная клавиатура, только определенные нажатия клавиш запускают событие вообще.Введите и удалите огонь событие.Буквенно-цифровые клавиши нет.Даже если я уберу всю логику и просто сделаю тост с e.KeyCode.ToString (), он покажет тост только на этих нескольких клавишах.
Слушаю ли я неправильное событие, это ошибка?или я совершил какую-то другую ошибку?
Устройство: Droid X2 Mono Версия: 4.0.4
Обновление: Я обнаружил, что KeyPress запускается дважды при каждом физическом нажатииключа: один раз для KeyEventActions.Up и один раз для Down.Это не объясняет, почему только определенные клавиши запускают событие, но следует отметить, что вам нужно проверить событие. E. Действие, чтобы выяснить, вызывает ли событие в данный момент нажатие или отпуск.