iOS 자체 구 궁 격 병 음 키보드 와 이모 티 콘 이모 티 콘 사이 의 구덩이

문제점 을 발견 하 다
최근 제품 에 필요 한 것 이 있 습 니 다.'입력 상자'에 이모 티 콘 입력 을 금지 하 라 고 요 구 했 습 니 다.우리 가 생각 할 수 있 는 방안 은 UITextField 의 textField:shouldChange Characters InRange:replacementString:프 록 시 방법 에서 입력 할 문자열 에 이모 티 콘 이 포함 되 어 있 는 지 여 부 를 판단 하고 포함 되 어 있 으 면 이 방법 에서 NO 로 돌아 가 입력 을 허용 하지 않 습 니 다.
이모 티 콘 을 포함 하 는 문자열 의 여 부 를 판단 하 는 방법 에 대해 인터넷 에는 이미 많은 코드 세 션 이 있 습 니 다.일반적으로 유 니 코드 인 코딩 범 위 를 통 해 판단 합 니 다.자세 한 내용 은 다음 과 같 습 니 다.https://gist.github.com/cihancimen/4146056 방법

- (BOOL)stringContainsEmoji:(NSString *)string;
이 같은 맥락 에서 개발 한 이모 지 의 표정 은 입력 이 불가능 하도록 제 한 된 것 은 사실 이지 만,키 보드 를 iOS 시스템 자체 의 구 궁 격 병 음 키보드 로 전환 해 한 자 를 입력 하려 고 할 때 병 음 을 입력 할 수 없 음 을 발견 했다.이거 어떻게 된 거 야?
해결 과정
먼저 시스템 자체 병 음 키보드 의 행 위 를 관찰 한 결과 병 음 을 통 해 한 자 를 입력 할 때 시스템 은 먼저 입력 상자 에서'사전 입력'병 음 자 모 를 차지 하 는 것 을 발견 할 수 있다.사용자 가 키보드 에서 한 자 를 선택 할 때 입력 상자 에서 차지 하 는'병 음 자모'는 해당 하 는 한자 로 대 체 될 것 이다.다음 그림:

정지점 디 버 깅 을 통 해 병 음 을 입력 하 는 과정 에서'지식 소 집'(zhishixiaoji)을 예 로 들 면 9 번 째 키 를 눌 러 알파벳 z 를 입력 할 때 UITextField 의 프 록 시 방법 에서 입력 할 문 자 는 z 가 아니 라 하나의 부호 인 10130 입 니 다.입력 이 끝 난 후(textFieldDid Change:)이 기 호 는 10130°에서 해당 하 는 자모 로 바 뀌 고 네 번 째 단 추 를 누 르 면 알파벳 h 를 입력 할 때 똑 같이 입력 할 문 자 를 얻 은 다음 에 h 로 바 뀌 어 유추 합 니 다.
우 리 는 애플 이 이렇게 하 는 이 유 는 구 궁 격 병 음 키보드 에 대해 한 키 는 3 또는 4 자 모 를 의미 하기 때 문 이 라 고 추측 했다.한 키 를 눌 렀 을 때 그 자 모 를 입력 해 야 한 다 는 것 을 몰 랐 기 때문에 원 이 있 는 숫자 기 호 를 임시 자리 로 하고 입력 이 끝 났 을 때 해당 하 는 자모 로 교체 했다.
구 궁 격 병 음 키보드 에서'ABC'키~'WXYZ'키 에 대응 하 는 임시 점 위 기 호 는 각각 ➋ ➌.
해결 방안
바로 Emoji 판정 방법 에서 상기 기 호 를 걸 러 내 는 것 입 니 다(대응 하 는 유 니 코드 인 코딩 은 U+278b~U+2792 와 U+263b).다음 과 같 습 니 다.

그러나 우 리 는 시스템 이 자체 적 으로 가지 고 있 는'전체 키보드 병 음 입력'은 상기 문제 가 없 을 것 이라는 것 을 발견 했다.왜냐하면 모든 키 는 하나의 자모 만 대표 하기 때문이다.

그리고 국내 에서 자주 사용 하 는 제3자 입력 법 도 이런 문제 가 없 을 것 이다.왜냐하면 그들 은 입력 상자 에'사전 입력'병 음 문자(키보드 위 에 병 음 표시)를 입력 하지 않 기 때문이다.사용자 가 한 자 를 선택 할 때 만 한 자 를 입력 상자 에 기입 한다.다음 과 같다.

총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기