채널톡 iOS 채팅 입력기의 작은 비밀
0
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

이 게시물은 채널톡 iOS 채팅 입력기 서식 적용 기능을 구현하며 다국어 입력에서 발생한 텍스트 변경 감지 문제를 다루는 글입니다.

입력 변화 감지 방식

  • NSTextStorage를 사용하고 NSTextStorageDelegate로 변경 시점(변경 전/처리 후)과 editedRange를 추적
  • UITextView 기반 입력에서도 동일 흐름으로 delegate 메서드가 호출됨

한글 입력에서의 의도 추정 한계

  • 한글 조합 입력은 글자가 중간에 지워졌다가 다시 채워져 textStorage.string이 단계적으로 바뀜
  • 서식 버튼을 누른 순간의 ‘사용자 의도’를 100% 예측하기 어려워 스타일은 “버튼 클릭 시점 이전의 입력을 완결된 입력”으로 간주하는 방식으로 처리함

가나(일본어) 입력에서의 Marked Text 영향

  • 일부 경우 editedRange가 부분 변경이 아니라 전체 덮어쓰기 형태로 전달됨
  • Marked Text(확정 전 다단계 입력 텍스트) 개념 때문에 확정 전 텍스트에 스타일을 바로 적용하기 어려워, 이전 텍스트를 unmark 후 이후 입력에 스타일을 입히는 접근으로 대응함

결론

  • 다국어 입력 환경에서는 NSTextStorage 변경 범위와 Marked Text 동작을 고려해야 올바른 사용자 경험을 제공할 수 있음

연관 게시글