Отключить клавиатуру при вводе последней цифры OTP - PullRequest
0 голосов
/ 05 августа 2020

Я работаю над концепцией, в которой есть экран OTP. Требуется автоматическое отключение клавиатуры при вводе последнего di git из 6 di git номера OTP.

Вот что я делал до сих пор -

if (lastOTPEntry.Value != string.Empty)
{
    lastOTPEntry.Unfocus();
}

Затем у меня есть EntryRenderer, который отменяет этот метод -

protected override void OnFocusChangeRequested(object sender, VisualElement.FocusRequestArgs e). 
{ 
   if (Control != null). 
   {    
        if (e.Focus)
        {
             Control.RequestFocus();
        }
        else
        {
            Control.ClearFocus();
        }
    }
}

Control is FormsEditText Но почему-то клавиатура не отклоняется. Что я здесь делаю не так? ..

1 Ответ

0 голосов
/ 05 августа 2020

Мне нужно было сделать что-то подобное в старом проекте, и в итоге я использовал шаблон службы для реализации.

Android Служба:

public class KeyboardService : IKeyboardService
{        
    public void HideKeyboard()
    {
        var context = Application.Context;
        var inputMethodManager = context.GetSystemService(Context.InputMethodService) as InputMethodManager;

        if (inputMethodManager != null && context is Activity)
        {
            var activity = context as Activity;
            var token = activity.CurrentFocus?.WindowToken;

            inputMethodManager.HideSoftInputFromWindow(token, HideSoftInputFlags.None);
            activity.Window.DecorView.ClearFocus();
        }
    }
}

iOS Служба:

public class KeyboardService : IKeyboardService
{
    public void HideKeyboard()
    {
        UIApplication.SharedApplication.KeyWindow.EndEditing(true);
    }
}

Интерфейс:

public interface IKeyboardService
{
    void HideKeyboard();
}

Для использования вам необходимо зарегистрировать его в своей службе зависимостей, чтобы разрешить его. После его разрешения использовать его:

if (lastOTPEntry.Value != string.Empty)
{
    keyboardService.HideKeyboard();
}

Я давно не касался этого проекта, но logi c должен работать.

...