2017-11-10 39 views
0

내 함수가 textview에서 현재 커서 위치를 가져오고 싶지만 textview에서 문자열 ""(커서가 마지막 위치에 있음)이 있으면 범위를 반환합니다 (0,6 6 등)와 현재 인덱스 위치가 3 것으로, 어떤 방법ios textView.selectedTextRange Emojis를 포함하는 텍스트 뷰에 잘못된 범위를 지정했습니다.

func getcurserforTextView(textView : UITextView) -> Int { 

    var cursorPosition = 0 

    if let selectedRange = textView.selectedTextRange { 

     cursorPosition = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start) 
    } 
    return cursorPosition 
} 

답변

0

selectedRangeoffset(from:to:) 값은 텍스트 뷰의 텍스트에 대한 UTF-16 문자를 기반으로 커서의 위치를 ​​얻을 수 있으면 알려 주시기 바랍니다 . 따라서 문자열은 UTF-16 문자 인코딩을 사용할 때 6자를 포함하므로 해당 문자열의 결과는 6입니다.

커서 위치에 따라 수행 할 작업에 따라 해당 UTF-16 오프셋을 "보통"String 색인으로 변환해야 할 수도 있습니다.

비슷한 상황과 변환 방법을 다루는 Converting scanLocation from utf16 units to character index in NSScanner (Swift)을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 UTF16 문자가 포함 된 텍스트 뷰에서 커서 위치가 필요합니다. 현재 응답은 총 문자 수만 제공하십시오. – user3395433

+0

당신은 내 대답을 읽고 제공된 링크를 보지 않았습니다. – rmaddy

+0

귀하의 대답은 문자열과 NSString의 측면에서 올바른지 만, 나를 위해 courser 색인, 설명 주셔서 감사합니다 – user3395433