Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 안드로이드
- n8n
- Xamarin
- 닷넷
- AWS
- 지도
- hot reload
- SecureStorage
- Android
- xcode13
- 자마린
- .net maui
- vpc
- MAUI
- 구글맵
- 망할
- v
- 구글지도
- 배포
- 프로그래밍
- ABLY
- ASP.NET Web API
- c#
- 개발
- 비주얼스튜디오2022
- 흑우마스터
- Xamarin Forms
- iOS노치
- aws lambda
- Cloudflare
Archives
- Today
- Total
흑우마스터의 마법의 공간
Xamarin.Forms 키보드가 오버 된 상태 해제하기 본문
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();