딩굴키보드 제작자님께 메일을 보내서 커서의 위치가 이동된 것을 체크하는 방법을 여쭈었으나
키보드 앱에서는 확인할 수 없다는 답변과 동시에 textDocumentProxy 가 뒤의 문자열을 가져오는
readonly property 가 있고, 지금 텍스트필드에 입력된 문자열을 가져와서 이전에 우리가 완성했던
문장(완성된 문장 + 조합중인 문자)과 비교해서 커서가 변경 되었는지를 체크 하도록 만들면
된다는 답변을 받았습니다.
이것을 토대로 만들어서 성공했고 잘 동작하네요.
내용은 아래와 같습니다.
// 텍스트 필드에 커서 까지 입력된 문자들을 textField 에 저장합니다.
NSString * textField = [self.textDocumentProxy documentContextBeforeInput];
// textField 의 뒤쪽 문자열 부분이 previousText와 다르거나 textField에 문자가 없다면 처음 문자를
// 출력하는 상태로 초기화 해주시면 됩니다.
// previousText 는 우리가 완성했던 문장 + 조합중인 문자. 예를 들자면 “대한” + “미”
if (![textField hasSuffix:previousText] || [textField isEqual:@“”]) { [self Clear]; }
“대한미” 까지 입력을 했다면 커서가 ‘미’ 뒤에 있을 때는 textField 가 “대한미” 이며
커서를 이동시켜서 ‘한’ 뒤에 두었다면 “대한” 이 될 것입니다.
previousText 는 “대한미” 이기 때문에 문자열 뒤쪽 부분만 비교해서 textField와
다르다면 문자를 처음 입력하는 상태로 초기화 하면 됩니다.
딩굴키보드 제작자님께 메일을 보내서 커서의 위치가 이동된 것을 체크하는 방법을 여쭈었으나
키보드 앱에서는 확인할 수 없다는 답변과 동시에 textDocumentProxy 가 뒤의 문자열을 가져오는
readonly property 가 있고, 지금 텍스트필드에 입력된 문자열을 가져와서 이전에 우리가 완성했던
문장(완성된 문장 + 조합중인 문자)과 비교해서 커서가 변경 되었는지를 체크 하도록 만들면
된다는 답변을 받았습니다.
이것을 토대로 만들어서 성공했고 잘 동작하네요.
내용은 아래와 같습니다.
// 텍스트 필드에 커서 까지 입력된 문자들을 textField 에 저장합니다.
NSString * textField = [self.textDocumentProxy documentContextBeforeInput];
// textField 의 뒤쪽 문자열 부분이 previousText와 다르거나 textField에 문자가 없다면 처음 문자를
// 출력하는 상태로 초기화 해주시면 됩니다.
// previousText 는 우리가 완성했던 문장 + 조합중인 문자. 예를 들자면 “대한” + “미”
if (![textField hasSuffix:previousText] || [textField isEqual:@“”]) { [self Clear]; }
“대한미” 까지 입력을 했다면 커서가 ‘미’ 뒤에 있을 때는 textField 가 “대한미” 이며
커서를 이동시켜서 ‘한’ 뒤에 두었다면 “대한” 이 될 것입니다.
previousText 는 “대한미” 이기 때문에 문자열 뒤쪽 부분만 비교해서 textField와
다르다면 문자를 처음 입력하는 상태로 초기화 하면 됩니다.