【发布时间】:2012-02-29 21:53:59
【问题描述】:
我有一个提供搜索建议的自定义搜索活动。我得到了对搜索输入框的引用并设置了一个处理程序:
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
}
}
}
出于某种原因,在软键盘上,只有某些按键才会触发事件。 Enter 和 Delete 触发事件。字母数字键没有。即使我取出所有逻辑并简单地使用 e.KeyCode.ToString() 进行 Toast,它也只会显示这几个键上的 toast。
我是在监听错误的事件,这是一个错误,还是我犯了其他错误?
设备:机器人 X2 单声道版本:4.0.4
更新:我发现每次物理按键都会触发 KeyPress 两次:一次用于 KeyEventActions.Up,一次用于 Down。这并不能解释为什么只有某些键会触发事件,但需要注意的是,您需要检查 event.E.Action 以了解当前是否按下或释放触发了事件。
【问题讨论】:
标签: c# xamarin.android keyboard-events