새소식

300x250
2. 웹개발/Error모음

[ IOS ] WebView 키보드(키패드) 영역 문제

  • -
728x90

[ IOS ] WebView 키보드(키패드) 영역 문제

 

안녕하세요. 갓대희 입니다. 이번 포스팅은 [ IOS WebView 키패드 영역 밀림 현상 해결 입니다. : ) 

 

이슈 현상

1. 환경

 - 해당현상은 IOS 14 이상의 경우에 개선 된 것으로 보이며, 그 미만 버전 즉 OS 12, 13 등의 버전에서 보이는 현상 이였다.

 

2. 내용

 - input 영역을 클릭하여 focus가 되었을때 키보드가 올라 온다.

 - 다음과 같은 화면이 있다고 하였을때 A 하단의 input 영역을 클릭 한다고 가정 하자.

 - 클릭시 다음과 같이 화면이 밀리면서 키패드가 올라오도록 기획된 경우.

 - 이 경우는 키패드가 올라오면서 html element 영역을 키패드 높이 만큼 같이 올려 준다.

이때 키보드가 내려갔을 때 키보드가 내려간 만큼 요소 영역도 다시 내려가도록 해주게 되어있다.

 

 - 하지만 특정 버전의 WebView 등에서 문제가 생긴다.

다음과 같이 키보드가 내려갔음에도 키보드가 내려간 만큼 화면이 내려가지 않는 현상이 발생한다.

 

 - 이런경우 사실 os버전에 따라 다른 솔루션이 있을 수 있겠지만, 다음과 같은 방법을 적용하여 해결하였다. - 다음 내용을 참고 하였다.github.com/ionic-team/capacitor/issues/814

 

 - 위의 github 내용중 다음과 같은 event를 일으키면 해당 WebView영역이 다시 돌아오게 되었다.

window.scrollTo(0,0);
document.body.scrollTop = 0;

 

 - 실제 이벤트 리스너를 통해 스크립트를 발생 시킬지, App과 협업을 할지 등은 테스트가 필요하지 않을까 싶다.

여러가지 고민했던 방법들도 다 적어 두려 한다.

 

window.addEventListener('keyboardWillHide', () => {
window.scrollTo(0,0);
document.body.scrollTop = 0;
});

 

const scrollToTopFn = () => {
if (window.Keyboard && !window.Keyboard.isVisible) {
window.scrollTo(0,0);
window.document.body.scrollTop = 0;
}
};

window.addEventListener('keyboardDidHide', () => {
window.setTimeout(scrollToTopFn, 100);
});

 

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.