2010년 05월 18일
browser 와 입력기
브라우저 실행 중에 검색어, 아이디 등을 입력하기 위해 touch 를 하면 입력기가 뜬다.
어떤 식으로 동작되는 것인지.....
일단 WebTextView.java 가 중심이 되는 소스이다...
검색창을 touch 하면
1. doShortPress() // webview.java
--> nativeMotionUp() // webview.cpp
--> motionUp() // webview.cpp
: 이곳에서 넘어 온 좌표를 보고 text 관련 영역인지 판단하고, rebuildWebTextView(), displaySoftKeyboard(true) 를
실행한다. 결과적으로 displaySoftKeyboard() 를 통해서 IME 가 실행된다.
# rebuildWebTextView() 를 자세히 보자.
: 이 함수는 여러 곳에서 불린다.
1) setSingleLine()
이 함수는 setImeOptions(), setInputType() 함수를 통해 IME 관련 셋팅을 한다.
setImeOptions() 함수는 next, go, done 의 option 을 통해 IME 에 반영한다.
물론 어떤 option 으로 셋팅을 할지는 mWebView.nativeTextFieldAction(); 를 통해 얻어 온다.
setInputType 이 호출되면서 InputMethodManager.restartInput() , InputMethodManager.startInputInner() 가
불리고, 이를 통해 WebTextView.onCreateInputConnet() 에서 connect 를 inputMethodManager 에서 얻어간다.
2) onSelectionChanged()
이유는 모르겠으나 setText() 함수 호출 시에 불린다.
3) onTextChanged()
이유는 모르겠으나 setText() 함수 호출 시에 불린다.
# 입력기에서 next, go, done 을 누를 경우
onEditorAction() 가 실행되면서 actionCode 에 따라서 처리를 한다.
# 입력기를 통해 글자 입력 시
onTextChanged() 가 호출되면 WebTextView 에 씌여 있는 글자가 arg 로 넘어 온다.
# by | 2010/05/18 17:30 | Browser Application 관련 | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]