AIR 한글 삭제문제 해결하기
Posted at 2008/11/27 16:25// Posted in RIA/AIR방문자수는 많고, 댓글은 적은 저의 블로그에 반가운 트랙백이 걸렸습니다. 바로 에어레네님께서 AIR에서 한글 삭제 문제를 해결한 방법에 대해 다룬 글이었는데요.
(AIR1.1 이후 한글 입력 버그 수정하기 - 에어레네)
사실 저도, 이와 관련된 버그리포팅도 많이 해봤고, AIR 1.5에서는 이런 문제가 고쳐지지 않을까 기대해 봤는데, 이번 릴리즈에 픽스가 되지 않아서 무척 아쉬웠습니다.
그럼 잠시, AIR1.1이후 발생한 한글 삭제 문제에 대해서 정리하도록 하겠습니다.
기존의 플렉스의 Textinput 컴포넌트에서는 한글 문자열을 백스페이스(←)를 눌러서 삭제하게 되면 깔끔하게 잘 삭제되었는데,
AIR 1.1이후 부터는 유독 한글문자열에서만 백스페이스(←)를 눌러 삭제하게 될경우 항상 가장 마지막 글자의 자음이 남게 되는 문제가 발생하게 되었습니다.
특히 이런 문제는 AIR1.0 에는 없던 문제였는데, AIR1.1이 출시된 이후 발생이 되어서 무척 실망스러웠습니다.
저도 이런 버그를 잡아 볼려고 많이 노력을 했는데, 역시 단무지(단순, 무식, 지....)인 저는 해결방법을 찾질 못하겠더라구요. 결국 고수님들의 따스한 은총을 기다리고 있었는데, 오늘 에어레네님께서 그와 관련된 해결방법을 남겨주셨네요.
에어레네님의 해결방법은, keyup이벤트가 송출될때마다, 벡스페이스가 눌러져 있으면, 이전의 문자열과 비교해서, 한글자가 남게 되면 삭제를 시켜주는 방법입니다.
앗 역시! 멋진 에어레네님 이다! 라고 감탄을 한번 하고,
저는 여기서 살짝 저의 생각을 더해, 한글 삭제 문제를 해결해보았습니다.
AIR1.1 이후버전에서는, 한글 삭제시 TextField의 포커스를 나타내는 EndIndex가 문자열보다 한글자 앞에 위치하는 문제가 있습니다. 따라서, 문자열을 삭제할때, 제일 마지막 문자의 자음이 남는 문제가 발생하게 됩니다.
이런 문제를 해결하기 위해, keydown 이벤트가 송출될때, 사용자가 누른 keycode를 체크해서 백스페이스(←)를 누르고 있을때, EndIndex를 1만큼 더해주면, 이런 문제가 말끔히 해결됩니다.
keydown 이벤트를 사용한 이유는, 사용자가 백스페이스(←) 키를 쭉 누르고 있을경우, keyup 이벤트는 한번 송출된것 밖에 안되기 때문에, 그런경우엔 제일 마지막 글자의 자음이 남게 됩니다.
위의 해결 방법으로 TextInput뿐만 아니라 TextArea에도 적용해서 AIR 1.1 이후 부터 발생한 한글삭제 문제를 해결할 수 잇을것이라고 생각합니다.
위의 컴포넌트는 어떤 용도에서든 사용하셔도 좋습니다.. ^^
무엇보다 근본적으로 이런 한글 입력 문제들이 많은 개발자분들의 버그리포트를 통해 빠른 시일 이내로 해결 될 수 있기를 간절히 희망합니다.
그런의미에서 지금까지 발견된 한글 입력문제들 보러가기!
(앗 그리고, 이 글은 제 블로그에 올리는 100번째 글이네요!! ㅋㅋ 축하축하 ㅋㅋ)


아.. 그리고 영어발음대로 읽으니 에어레네였던것 같은데.. 에이레네 님이셨군요.. ㅎㅎ 죄송합니다.
감사합니다^^
아쉽게도 Flex의 Textinput에만 저런 문제가 있어서..
많이 아쉽네요... ㅜㅜ
고맙습니다.~~
저도 해결책을 찾다가 다른 방법을 찾게되서 트랙백 남깁니다^^
AIR에서 한글 문제는 제가 me2DC 개발하면서 부딪혔던 문제였는데요...버그 패치 버전 같은게 나올 줄 알고 기다리다가 결국 꽁수를 희덕님과 비슷한 방법으로 꽁수를 써서 해결했었습니다. 그런데 그 꽁수도 백스페이스를 한번씩 누르지 않고 계속 누르고 있으면 통하지 않더군요 ㅜㅜ
이번에 flex sdk하고 flashPlayer가 업데이트 되었잖아요~ 관련 포스트도 읽어 보았는데요... 로컬파일 접근 기능은 정말 반가운 기능이었어요. 그래서 한 번 테스트 해 봤는데 잘 되더군요. 하지만!!! 황당한 버그에 직면해야 했습니다. TextInput에 한글 입력이 안된다는...Flex Component 네이버 카페와 Adobe Bug Tracking 사이트에도 이미 등록이 되어 있더군요. 한글IME에서 문제가 있는 것 같아요. 일본어는 테스트 해 보니 잘 입력되어서 더 실망했었죠? 혹시 이 문제에 대해서 알고 계신지요?