Skip to content

https://iphonedev.co.kr/iOSDevQnA/32096 #3

Description

@wiwi-git

딩굴키보드 제작자님께 메일을 보내서 커서의 위치가 이동된 것을 체크하는 방법을 여쭈었으나

키보드 앱에서는 확인할 수 없다는 답변과 동시에 textDocumentProxy 가 뒤의 문자열을 가져오는

readonly property 가 있고, 지금 텍스트필드에 입력된 문자열을 가져와서 이전에 우리가 완성했던

문장(완성된 문장 + 조합중인 문자)과 비교해서 커서가 변경 되었는지를 체크 하도록 만들면

된다는 답변을 받았습니다.

이것을 토대로 만들어서 성공했고 잘 동작하네요.

내용은 아래와 같습니다.

// 텍스트 필드에 커서 까지 입력된 문자들을 textField 에 저장합니다.

NSString * textField = [self.textDocumentProxy documentContextBeforeInput];

// textField 의 뒤쪽 문자열 부분이 previousText와 다르거나 textField에 문자가 없다면 처음 문자를

// 출력하는 상태로 초기화 해주시면 됩니다.

// previousText 는 우리가 완성했던 문장 + 조합중인 문자. 예를 들자면 “대한” + “미”

if (![textField hasSuffix:previousText] || [textField isEqual:@“”]) { [self Clear]; }

“대한미” 까지 입력을 했다면 커서가 ‘미’ 뒤에 있을 때는 textField 가 “대한미” 이며

커서를 이동시켜서 ‘한’ 뒤에 두었다면 “대한” 이 될 것입니다.

previousText 는 “대한미” 이기 때문에 문자열 뒤쪽 부분만 비교해서 textField와

다르다면 문자를 처음 입력하는 상태로 초기화 하면 됩니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions