Issues/Mobile(Web&App)

[IOS & javascript] ios 이모티콘 키패드 height 조정하기 (emoji keypad window resize)

joannashin3 2021. 12. 8. 14:02

상황

앱에서 키패드를 이모티콘으로 변경했을때 height가 높아져 입력란이 가려짐 이슈

 

해결

 

1. window.visualViewport

window.resize를 해봤는데 앱이라 그런지 안됨.. 찾아보다가 window.visualViewport로 해결

간단하게 정리한 소스 !!

function resizeKeypad = () => {
    requestAnimationFrame(() => {
    	//필요한 함수 실행
    })
}

window.visualViewport.addEventListener("resize", resizeKeypad)

 

전체소스

$(function () {
    let flag = false;
    
    function handler(e) {
    	if (flag) return;
        flag = true;
        
        requestAnimationFrame(function () {
            flag = false;
            $(window).scrollTop(window.innerHeight); //스크롤 최하단으로 이동
        })
    }
    
    //혹시라도 visualViewport 없을 경우 대비하여 방어코드 추가
    if (window.visualViewport) {
    	//visualViewport 기준으로 resize가 일어나면 handler이벤트 실행
    	window.visualViewport.addEventListener("resize", handler);
    }
})

 

2. 입력박스에 focus 될때마다 scroll 최하단으로 이동

$(document).on("focus", "input", function () {
	setTimeout(function () {
    	window.scrollTo(0, window.innerHeight);
    }, 0)
})

 

focus 될때마다 최하단으로 이동하는건데 아무래도 스크롤 내리다가 입력박스 클릭하면 최하단으로 이동하기도 하고 1번 소스가 더 깔끔하고 사이드이펙이 적어보여서 1번으로 해결.

반응형