fra3il

UIKeyboardCandidateBar + Bluetooth Keyboard

Introduction

fra3il

fra3il


LATEST POSTS

AWS Lambda 는 개뿔.. 하나도 모르겠다고! 03rd June, 2016

앱 아이콘에 앱 버전, 빌드 번호 등의 정보를 표시하는 방법 05th February, 2016

iOS

UIKeyboardCandidateBar + Bluetooth Keyboard

Posted on .

iOS5 부터 특정 언어에는 아래 그림과 같이 UIKeyboardCandidateBar 가 추가되었다.

대충 구조는 아래와 같이 이루어져있는 것 같고..

UIKeyboardCandidateBar  
    UIKeyboardCandidateBarBackgroundView  
    UIScrollView  
        UIKeyboardCandidateBarCell  

여튼 기존 코드에서 키보드에 관련된 노티피케이션을 이용, 키보드의 높이를 구해서 뷰를 처리하는 과정이 추가될 수 밖에 없었다.

.. 이제 끝?!

일반적인 경우는 여기까지 처리하면 끝나는 문제지만 Bluetooth Keyboard 가 연결된 경우는 이야기가 다르다.
eject 를 이용해서 키보드를 올리고 내리는 경우까지 생각해줘야 하는 것이다.
( landscape 를 지원하는 경우는 꽤나 문제가 된다. )

아래의 경우를 가정해보자.
1. 한글 키보드 상태에서 키보드를 내린다.
2. 일본어 키보드로 변경한다.
3. 키보드를 올린다.
4. 키보드를 내렸다가 올린다.

3 의 과정에서 키보드에 UIKeyboardCandidateBar 가 포함되어 있지만 실제로 넘어오는 값은 그렇지 않으며,
4 의 과정을 거친 후에야 제대로 된 값이 넘어온다는 걸 확인할 수 있다.

결국 UIKeyboardCandidateBar 를 직접 찾아서 확인하는 수 밖에 없다.
아래와 같은 구조로 되어있지만 그냥 무식하게 찾아버리자. ( 늘 그렇지만 더 나은 방법이 있을텐데 머리가 굳어서.. )

UITextEffectsWindow  
    UIPeripheralHostView  
        UIKeyboardAutomatic  
            UIKeyboardImpl  
                UIKeyboardCandidateBar

애플 이렇게 할꺼냐.. -_-

fra3il

fra3il

Navigation