프로그래밍/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();