如何在xamarin表单上使用硬件后退按钮捕获事件?

时间:2018-06-14 13:10:17

标签: c# xamarin xamarin.forms keypress

我知道Android上的解决方案

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) 
 {
        switch(keyCode){
        case KeyEvent.KEYCODE_BACK:
            // do something here 
            return true;
 }
        return super.onKeyDown(keyCode, event); }

但我不能在表格方面这样做。焦点是一个条目,所以键盘是可见的,当我按下硬件后退按钮(键盘消失)我想设置我的变量值。

编辑:

bool _tapped;

LwTeszt.PropertyChanged += (s, e) =>
            {
                if (LwTeszt.SelectedItem != null)
                {
                    EntryTeszt.Focus();
                }

            };

            EntryTeszt.Unfocused += EntryTeszt_Unfocus;

        private void EntryTeszt_Unfocus(object sender, FocusEventArgs e)
        {
            _tapped = true;
        }

        private void ViewCell_Tapped(object sender, EventArgs e)
        {

            if (_tapped)
            {
                EntryTeszt.Unfocus();
                _tapped = false;
                return;
            }

            EntryTeszt.Focus();

        }

2 个答案:

答案 0 :(得分:0)

除非你有其他逻辑,你没有发布我认为你可能会使事情过于复杂。我相信您需要做的就是将注意力集中在ViewCell_Tapped

private void ViewCell_Tapped(object sender, EventArgs e)
{
    EntryTeszt.Focus();
}

当按下后退时,表格会处理您Entry的重点,在这种情况下,您不会需要LwTeszt.PropertyChanged_tappedEntryTeszt.Unfocused部分。

答案 1 :(得分:0)

有一个事件你必须覆盖它,你可以处理Xamarin表格中的后退按钮。使用以下代码处理后退按钮:

 protected override bool OnBackButtonPressed()
    {
        // your code
        return base.OnBackButtonPressed();
    }

您也可以参考this question了解更多信息。