如何检测退格在进入控制时,它是空的

问题描述 投票:1回答:1

我使用Xamarin.Forms与Android。我有这对于用户输入密码4所控制的一种形式。我使用TextChanged事件来检测用户的输入,并自动将焦点移动到下一个控件。这部分工作正常,即如用户键入数字的焦点会自动跳转到下一个条目。不过,我需要实现相反,用户应该能够挖掘退格键和重点应该移动到前面的控制。问题是,当输入控件为空框TextChanged不会被触发。我怎样才能做到这一点?是否有一个自定义渲染我可以创建为Android捕获文本输入?也许有使用1项而不是一个办法,但我需要使它看起来像不同的4盒。

xamarin xamarin.forms xamarin.android
1个回答
0
投票

最后,我已经实现在Android上渲染找到一个解决方案。

在共享代码(PCL),创建这样的类

public class CustomEntry:Entry
{
    public delegate void BackspaceEventHandler(object sender, EventArgs e);

    public event BackspaceEventHandler OnBackspace;

    public CustomEntry()
    {

    }

    public void OnBackspacePressed()
    {
        if (OnBackspace != null)
        {
            OnBackspace(null, null);
        }
    }
}

而且,然后在你的Android项目创建这样的渲染器:

 public class CustomEntryRenderer: EntryRenderer
 {
    public override bool DispatchKeyEvent(KeyEvent e)
    {
        if (e.Action == KeyEventActions.Down)
        {
            if (e.KeyCode == Keycode.Del)
            {
                if (string.IsNullOrWhiteSpace(Control.Text))
                {
                    var entry = (PasswordBox)Element;
                    entry.OnBackspacePressed();
                }
            }
        }
        return base.DispatchKeyEvent(e);
    }

    protected override void 
    OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);
    }
}

然后用它是这样的:

Entry1.OnBackspace += Entry1BackspaceEventHandler;

public void Entry1BackspaceEventHandler()
{
//things you want to do
}
© www.soinside.com 2019 - 2024. All rights reserved.