AIR 한글 삭제문제 해결하기
RIA/AIR 2008/11/27 16:25 |방문자수는 많고, 댓글은 적은 저의 블로그에 반가운 트랙백이 걸렸습니다. 바로 에어레네님께서 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번째 글이네요!! ㅋㅋ 축하축하 ㅋㅋ)
Trackback Address :: http://adnaru.com/trackback/100
-
Subject: [AIR] 한글 입력 버그에 대한 대안
Tracked from 우야꼬의 Adobe RIA 2008/12/02 00:59 Delete현재까지는 완벽한 대안은 없는거 같습니다. 희덕님이 제안하신 방법도 좋습니다. 제가 제안하는 방법은 클래스 추가 없이 메소드로 해결하는 방법입니다. 직접 AIR fla 1프레임에 아래 코드 넣고 돌려보시면 테스트할 수 있는 코드입니다. var txt: TextField = new TextField(); txt.type = "input"; txt.width = stage.stageWidth; txt.height = stage.stageHeight; t..


댓글을 달아 주세요
헛. 이런 반가운 소식이! 소개해주셔서 고맙습니다~ ^^!
아핫... 감사합니다 (__)
역시 희덕님 좀 짱인듯 ㅇㅇ乃 (긍데 에어레네가 아니고 에이레네입니다..ㅠㅠ 영어 발음상으로는 에어레네라고 할 수도 있겠지만, 정통 그리스어 발음을 존중합니다 ^^;;)
아니에요.. 저 많이 허접해요 ㅜㅜ
아.. 그리고 영어발음대로 읽으니 에어레네였던것 같은데.. 에이레네 님이셨군요.. ㅎㅎ 죄송합니다.
아 좋은 정보네요~ 아직 부딪혀보진 않았지만 일날뻔했네요 ㅎㅎ
감사합니다^^
넵 ㅜㅜ
아쉽게도 Flex의 Textinput에만 저런 문제가 있어서..
많이 아쉽네요... ㅜㅜ
좋은정보에요 희덕님^^
고맙습니다.~~
넵! 감사합니다.
희덕님 안녕하세요.
저도 해결책을 찾다가 다른 방법을 찾게되서 트랙백 남깁니다^^