태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[FLEX/AIR] 현재까지 발견된 한글처리 문제

어도비 플렉스가 국내 시장에 활발히 도입된지도 근 3년이 되어가고 있습니다. 지금 이시간에도 많은곳에서 플렉스를 도입하여 프로젝트를 진행하고 있습니다.

매크로미디어(현 어도비)에서 RIA 즉, '똑똑한 인터넷'이라고 제안한지도 약 5년이 되어갑니다. 그동안 정말 많은 변화를 겪었습니다. 또 올해엔 Flash Player 10(astro)가 출시를 예고 하고 있고, 내년엔 Flex 4도 정식으로 출시될 예정입니다.

하지만, 한국에선 아쉽게도 '똑똑한 인터넷'이 제 힘을 발휘하고 있지 못합니다. 한글조차 제대로 처리하지 못하고 있기 때문입니다. 한글을 사용하고 또 사랑하는 한국인으로써 제일 화가 나고 짜증나는 부분이기도 합니다. 많은 개발자들이 Flex 2부터 어도비에 수정을 요구했던 부분이지만 아직까지도 수정이 되고 있지 않습니다.

어도비에 빠른 수정을 바라면서, 현재까지 발견된 문제점과 해결법에 대해서 다루어 보고자 합니다.

우선 지금까지, 약 4가지의 문제가 알려져있습니다.

  1. 한글을 입력할때 영어나 숫자를 입력할때 보다 지연되는 현상이 있습니다.
  2. 텍스트 블록을 벗어날때 까지 해당 텍스트가 인식되지 않는 문제가 있습니다.
  3. wmode가 transparent일때 IE를 제외한 브라우저에서 한글이 입력되지 않는 현상이 있습니다. (FP-479)
  4. AIR 1.1에서 한글을 삭제할때, 자소 처리에 문제가 있습니다.

1번문제

플렉스에는 Textinput, TextArea, 또 전혀 Rich하지 않은 RichTextEditor컴포넌트를 통해 텍스트를 입력할 수 있습니다. 하지만, 이들 컴포넌트에는 한글 입력시, 영문이나 숫자보다 한글이 다소 지연되어서 입력되는 문제가 있습니다.

이런 문제가 플렉스 챔피언이신 신호승님에 의해 의외로 간단히(?) 해결되었는데, TextField의 alwaysShowSelection 프로퍼티의 값을 true로 바꿔주게 되면, 한글 입력 지연현상이 말끔히 사라집니다.

TextField의 alwaysShowSelection 프로퍼티를 true로 설정하게 되면 텍스트필드에 포커스가 없는경우, 선택영역이 회색으로 강조표시가 됩니다. 어째서 이렇게 해결이 되는지 저도 많이 궁금하네요.. ㅋㅋ

TextInput, TextArea, RichTextEditor의 TextField에는 바로 접근할수 없기 때문에, 별도로 mxml 컴포넌트나 as컴포넌트를 만들어서 해결해야 합니다.
 


하지만 위의 해결 방법은 문제점이 있습니다. 근본적으로 AlwaysShowSelection이 TextField의 강조표시와 관련된 프로퍼티이기 때문에, 여러개의 입력 컴포넌트를 사용하게 될경우 각 입력컴포넌트에 텍스트블록 잔상이 남게 됩니다.

무엇보다 이런 문제가 Flex 2 부터 제기되어온 문제인 만큼, Flex 3.2, Flex 4(Gumbo)에서는 꼭 해결될수 있길 바랍니다.
 

2번문제

이 문제는 앞서 설명드린 Flex의 입력컴포넌트 Textinput, Textarea, Richtexteditor에서 발생하는 문제입니다.
이들 입력컴포넌트에는 text 프로퍼티로, 해당 입력컴포넌트에 입력된 plain text를 받아올 수 있습니다.

하지만, 2byte 문자열을 입력하게 될경우 해당 문자가 텍스트블록에서 벗어나거나, 입력컴포넌트가 포커스 아웃 될때까지 text 프로퍼티에 정상적으로 인식되지 않는 문제가 있습니다.



예를들어 가방이라는 문자열을 입력할경우, "ㄱ", "가", "갑"의 경우 아직 텍스트블록에서 벗어나지 않았기 때문에 입력컴포넌트의 text프로퍼티의 값은 공백으로 인식됩니다.

물론 이들 입력컴포넌트는 다른 UIComponent를 클릭할때 포커스아웃이 되기 때문에, 버튼을 눌러서 정보를 보낼때에는 문제가 없지만, 입력컴포넌트의 입력값의 변화를 비 동기적으로 서버와 주고받아야 할 경우 문제가 발생하게 됩니다.
(예를들어, 구글의 검색어 제안이나, 우편번호 검색 등등..)

이 문제의 경우 TextField의 text 프로퍼티를 불러오게 될경우 정상적으로 해결 됩니다.
TextField는 각 입력컴포넌트에서 직접 사용할수 없기 때문에 mxml 컴포넌트나 as 컴포넌트를 만들어서 불러와야 합니다.




위의 예는 두개의 입력 컴포넌트에 keyup 이벤트를 걸어둔 예시입니다.

두 입력컴포넌트 모두, 한글자씩 입력할때 마다, 정상적으로 keyup 이벤트가 발생하지만, 첫번째 입력컴포넌트의 경우 text프로퍼티로 불러와서 해당 텍스트블록을 벗어날때까지 텍스트가 인식되지 않지만, 두번째 입력컴포넌트의 경우 위에서 정의해둔 ktext 프로퍼티로 textfield의 text를 불러오기 때문에 텍스트블록을 벗어나지 않더라도 한글자씩 정상적으로 인식이 됩니다.


3번문제

Flash Player의 embed, object에 넣을수 있는 프로퍼티중 wmode라는 프로퍼티가 있습니다. wmode는 삽입될 Flash의 투명정도, 계층정도, 배치정보등을 설정할 수 있습니다.

그중 transparent 설정이 있는데, flash 배경을 투명으로 설정해두면 뒤의 HTML 배경이 해당 flash에 빚추어서 보이게됩니다.

하지만 wmode 프로퍼티가 아직 완벽히 브라우저, 플랫폼을 지원하지 않기 때문에, 일부브라우저에서는 제대로 지원되고 있지 않습니다. wmode 프로퍼티의 transparent 설정과 관련된 문제는 Flex Bug and Issue Management System의 단골 과제가 되어버렸습니다.

특히 wmode프로퍼티에 transparent를 지정하게 될경우 인터넷익스플로러(IE)외의 브라우저에서는 2byte의 문자열이 정상적으로 입력되지 않는 문제가 있습니다.

이 문제를 해결할만한 꼼수는 아쉽게도 아직 없습니다. IE이외의 브라우저에서 한글 입력이 반드시 필요하시다면, wmode 프로퍼티에 transparent를 지정하는것을 피하시는게 좋겠습니다.

이 문제와 관련된 꾸준한 버그 리포팅이 올라와서, Flash Player 10에는 수정될것으로 기대 되었습니다만, 지금 현재까지 출시된 Flash Player 10 Beta에선 수정되고 있진 않습니다.


4번문제

이 문제는 아주 최근(2008년 6월 16일)에 AIR1.1이 릴리즈 되면서 발견된 문제입니다.
AIR1.1의 입력컴포넌트중 Textinput, TextArea, RichTextEditor에서 한글을 삭제할때 마지막 글자의 자음이 남게됩니다.


Flex에선 텍스트블록이 검정색으로 표시되고 backspace(←)로 삭제하게 될경우 모두 제거가 되지만,


AIR1.1에서는 텍스트 블록이 노란색으로 표시되어 있고, 또 프롬프트도 입력된 글자 이전에 위치해 있습니다.
이상태에서 해당 글자를 backspace(←)로 삭제하게 되면, 제일 마지막 글자의 자음이 남게 됩니다.

이 문제에 있어서 아직 마땅한 해결 방법은 없습니다.
또, 아이러니 하게도 바로 전 버전의 런타임인 AIR1.0에서는 이런 문제가 없습니다.

이 문제가 AIR1.1 릴리즈 이전에 제대로된 로컬라이징 테스트 부족으로 발생한 문제이기 때문에, 곧 릴리즈 되는 AIR 1.5에서는 반드시 고쳐지길 바랍니다.



우리나라는 타 국가에 비해 많은 분야에서 Flex/AIR를 통한 프로젝트가 활성화가 되어있습니다.
하지만, 아직 몇몇부분에서 한국어 조차 제대로 처리하지 못하고 있는 사실이 아쉽습니다.

곧 릴리즈 되는 Flex 3.2, Flex4에서는 반드시 이런 문제가 해결될수 있길 바랍니다.
트랙백 0 Comment 15
prev 1 ··· 162 163 164 165 166 167 168 169 170 ··· 185 next