0
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 채널톡 iOS 채팅 입력기 서식 적용 기능을 구현하며 다국어 입력에서 발생한 텍스트 변경 감지 문제를 다루는 글입니다.
입력 변화 감지 방식
- NSTextStorage를 사용하고 NSTextStorageDelegate로 변경 시점(변경 전/처리 후)과 editedRange를 추적
- UITextView 기반 입력에서도 동일 흐름으로 delegate 메서드가 호출됨
한글 입력에서의 의도 추정 한계
- 한글 조합 입력은 글자가 중간에 지워졌다가 다시 채워져 textStorage.string이 단계적으로 바뀜
- 서식 버튼을 누른 순간의 ‘사용자 의도’를 100% 예측하기 어려워 스타일은 “버튼 클릭 시점 이전의 입력을 완결된 입력”으로 간주하는 방식으로 처리함
가나(일본어) 입력에서의 Marked Text 영향
- 일부 경우 editedRange가 부분 변경이 아니라 전체 덮어쓰기 형태로 전달됨
- Marked Text(확정 전 다단계 입력 텍스트) 개념 때문에 확정 전 텍스트에 스타일을 바로 적용하기 어려워, 이전 텍스트를 unmark 후 이후 입력에 스타일을 입히는 접근으로 대응함
결론
- 다국어 입력 환경에서는 NSTextStorage 변경 범위와 Marked Text 동작을 고려해야 올바른 사용자 경험을 제공할 수 있음