2019년 10월 31일 개발 일지

📱Capacitor 프레임웍을 이용하여 하이브리드 모바일 앱 CartLogic 을 개발중에 있다.

❗문제점 발견: 모바일 화면 스크롤이 on & off 로 되다/안되다 하는 현상.

: 하이브리드로 제작한 앱을 아이폰으로 빌드하여 사용해보니 모바일 스크롤이 잘 되다가 갑자기 안되기도 하고, 겉으로 느끼기에는 불연속적으로 스크롤이 먹통 되는 것 처럼 보였다. 하지만 계속 앱을 만지작거리고 기능들을 사용해보면서 문제의 원인이 무엇인지 알게되었다.

💬문제점 이유: input 사용자 입력란 또는 select 선택을 하면 iOS 키보드가 자동으로 나타나게 되는데, 키보드를 오픈한 후 닫으면 스크롤이 먹통되는 것이다.

🐞문제 해결 방법: 모바일 키보드는 네이티브 앱 플러그인 Capacitor 에서 기능이 연동되므로 바로 Capacitor 문서의 키보드 API 를 확인해보았다. setScroll 이라는 api 가 있는데, 이를 disabled true/false 를 지정할 수 있었다.

🔑setScroll

setScroll(options: { isDisabled: boolean }): Promise<void>
Programmatically enable or disable the WebView scroll
options { isDisabled: boolean }
returns: Promise<void>

https://capacitor.ionicframework.com/docs/apis/keyboard

아마도 디폴트 세팅이 isDisabled: true 라고 되어있는 모양이다. 키보드를 닫기 전에 ::setScroll 을 isDisabled: false 로 설정::하여 스크롤 먹통 문제를 해결했다.

// app-root.tsx 파일에서 capacitor keyboard 플러그인을 불러온 후,
import { Plugins } from '@capacitor/core';
const { Keyboard } = Plugins;

// componentWillLoad() 라이프 훅에 아래 코드를 추가했다.
Keyboard.addListener('keyboardWillHide', () => {
      Keyboard.setScroll({ isDisabled: false });
    });