【问题标题】:How to catch event with hardware back button on xamarin forms?如何使用 xamarin 表单上的硬件后退按钮捕获事件?
【发布时间】:2018-11-24 06:48:00
【问题描述】:

我知道 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();

        }

【问题讨论】:

    标签: c# xamarin xamarin.forms keypress


    【解决方案1】:

    除非您有未发布的其他逻辑,否则我认为您可能会使事情过于复杂。我相信您需要做的就是将您的条目集中在ViewCell_Tapped

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

    当您按下返回键时,表单会为您处理 Entry 的失焦问题,在这种情况下,您将不需要 LwTeszt.PropertyChanged_tappedEntryTeszt.Unfocused 部分。

    【讨论】:

    • 我已经试过了。我只需要在按下后退按钮时触发一些东西。
    • 为什么Unfocused 不起作用,您要设置什么值?
    • 好的,这是我的代码,[我编辑了我的问题,检查顶部]让我们试试。
    • 并尝试使用后退按钮。 _tapped 将在按下按钮后的第一次为真(因为 EntryTeszt_Unfocus 被触发),所以我需要在它之后点击 2 次。这不好。
    • 那么从我可以从您的代码中看出,您是否有一个带有自定义视单元的ListView,其中包含一个Entry,并且当他们单击不同的行时您试图取消焦点?
    【解决方案2】:

    有一个事件,您只需覆盖它,您就可以处理 Xamarin 表单中的后退按钮。使用以下代码处理后退按钮:

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

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

    【讨论】:

    • 这对我不好。当键盘出现时,它不会被触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2012-04-28
    • 2018-10-31
    • 2014-04-28
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多