iOS Custom Keyboard Extension 만들기 -2 기본 구조

So,Soon·2020년 5월 25일
0
  • iOS 13.4 / Xcode11.4 기준으로 작성 되었습니다.

만들기에 앞서, 기본적인 키보드 익스텐션의 구조(architecture)를 알아봅시다.

많이 어려운 내용은 없지만 아주 기초적인 swift와 xcode경험이 있어야 수월합니다.

UIInputviewController

(Basic structure of a custom keyboard, 출처 : developer.apple.com)

우리가 만들 키보드의 구조입니다. 아직 생소한것들이 많이 있으시겠지만 차근차근 알아가 봅시다.

먼저 위 그림에서 제일 중요한 것은 UIInputviewController 입니다.

사용자가 만든 앱을 모든 앱에서 접근 가능한 키보드로 만들어주는 친구 입니다.

iOS에서는 텍스트필드와 같이 키보드 입력이 필요한 상황에서는 InputView를 띄웁니다. 간단하게 말하면 키보드가 올라오는 '영역'이라고 생각하시면 됩니다.

이러한 InputView를 Control하는 컨트롤러가 바로 UIInputviewController가 되구요.

앞으로 진행할 프로젝트에서도 우리는 커스텀 뷰를 만들어서 이 Inputview의 서브뷰로 추가하는 방식으로 키보드를 구현할거에요.

textDocumentProxy

textDocumentProxy는 키보드 앱이 입력에 접근 할 수 있는 proxy입니다.

proxy라는 말이 조금 생소하시다면 '중계기' 또는 '중계인'으로 이해하셔도 좋을것 같습니다.

입력에 접근한다는 말은, 지금 커서에 위치한 곳에 텍스트를 입력하거나, 지우거나 하는 등의 행동을 얘기합니다.

그렇다면 왜 입력에 접근하는데 바로 접근하지 않고 proxy를 사용할까요?

조금만 고민해보면 보안 문제 때문인걸 알 수 있습니다.

사용자 입력에 커스텀 키보드가 마음껏 접근이 가능하다면, 대화,비밀번호,아이디,통장번호 등 스마트폰을 사용하면서 만드는 제일 민감한 정보들이 마구마구 노출 된다는 것과 같으니까요.

정리

정리해보면 가장 기본적인 구조는 이렇습니다.

  1. inputview(키보드가 올라오는 영역)에 우리가 원하는 view를 띄운다.
  2. 우리가 원하는 view에서 사용자의 입력이 감지 된다면
    2-1. textDocumentProxy를 이용하여 입력하거나,지우거나 하는 등의 행동을 요청
profile
iOS Software Engineer, Audio Software Engineer, SKKU Computer Science, Business Administration

0개의 댓글