흑우마스터의 마법의 공간

Xamarin.Forms 키보드가 오버 된 상태 해제하기 본문

프로그래밍/Xamarin

Xamarin.Forms 키보드가 오버 된 상태 해제하기

흑우마스터 2022. 10. 25. 22:43

Entry에서 타이핑을 하는 상황에서 ScrollView를 선택하거나 다른 페이지를 이동하더라도 키보드가 그대로 오버 된 상태를 유지하는 문제가 있었는데 아래와 같은 방법으로 해결하였다.

 

물론 안드로이드와 iOS에서 작업할 때에는 네임스페이스 위에 Dependency를 선언해줘야 된다.

[assembly: Dependency(typeof(인터페이스를 구현한 클래스명))]

 

 

인터페이스:

public interface IKeyboardHelper
{
    void HideKeyboard();
}

iOS:

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

안드로이드:

public class DroidKeyboardHelper : IKeyboardHelper
{
    public void HideKeyboard()
    {
        var context = Forms.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();
        }
    }
}

사용법:

DependencyService.Get<IKeyboardHelper>().HideKeyboard();