gpt4 book ai didi

c# - 多次调用 KeyPress/EditorAction 事件处理程序

转载 作者:行者123 更新时间:2023-11-29 23:59:11 25 4
gpt4 key购买 nike

我已将 EditText 控件的 KeypressEditorAction 事件处理程序组合到一个名为 InputField_KeyPressEditorAction 的方法中。当我输入一些文本并按 Enter 时,以下代码会执行多次(2 次、3 次或更多次):

private void InputField_KeyPressEditorAction(object sender, EventArgs e)
{
var ke = e as View.KeyEventArgs;
var eae = e as TextView.EditorActionEventArgs;

if (ke != null)
{
ke.Handled = false;
}

if (eae != null)
{
eae.Handled = false;
}

if (ke != null && (ke.Event.Action == KeyEventActions.Down || ke.Event.Action == KeyEventActions.Up) &&
(ke.KeyCode == Keycode.Enter || ke.KeyCode == Keycode.Unknown) ||
eae != null && eae.ActionId == ImeAction.Done)
{
if (string.IsNullOrEmpty(_inputField.Text)) return;
_inputField.Text = Regex.Replace(_inputField.Text, @"\t|\n|\r", string.Empty);


if (_notificationArea.Text.Contains(_scanEan))
{
// Following code executes twice....
}

if (ke != null)
{
ke.Handled = true;
}

if (eae != null)
{
eae.Handled = true;
}

var imm = (InputMethodManager)GetSystemService(InputMethodService);
imm.HideSoftInputFromWindow(CurrentFocus.WindowToken, HideSoftInputFlags.None);
}
}

我将事件处理程序分配给控件的部分:

        _inputField = FindViewById<EditText>(Resource.Id.editTextScan);
_inputField.KeyPress += InputField_KeyPressEditorAction;
_inputField.EditorAction += InputField_KeyPressEditorAction;

这种奇怪行为的原因是什么?我做错了什么吗?

最佳答案

EditText.EditorAction (TextView.IOnEditorActionListener) 将针对每个向上、向下、长按和多键连同 10 个不同的 ImeAction 被调用 基于操作。

您应该将 keypress 和 editaction 事件处理程序分离到单独的函数中。

关于c# - 多次调用 KeyPress/EditorAction 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50105064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com