ios - selectedTextRange UITextRange를 NSRange로 변환합니다.



objective-c (2)

UITextRange 객체를 NSRange 로 변환하려면 어떻게해야합니까? 나는 다른 방향으로가는 것에 대한 많은 게시물을 보았지만 그것이 내가 필요한 것의 반대이다. UITextRange selectedTextRange UITextView 속성을 사용하고 있습니다. 그것은 UITextRange 반환하지만 범위가 필요합니다.

https://ffff65535.com


Vitaly S.의 대답을 기반으로 한 신속한 확장이 있습니다.

extension UITextInput {
    var selectedRange: NSRange? {
        guard let range = self.selectedTextRange else { return nil }
        let location = offsetFromPosition(beginningOfDocument, toPosition: range.start)
        let length = offsetFromPosition(range.start, toPosition: range.end)
        return NSRange(location: location, length: length)
    }
}

다음과 같은 것이 필요합니다.

- (NSRange) selectedRangeInTextView:(UITextView*)textView
{
    UITextPosition* beginning = textView.beginningOfDocument;

    UITextRange* selectedRange = textView.selectedTextRange;
    UITextPosition* selectionStart = selectedRange.start;
    UITextPosition* selectionEnd = selectedRange.end;

    const NSInteger location = [textView offsetFromPosition:beginning toPosition:selectionStart];
    const NSInteger length = [textView offsetFromPosition:selectionStart toPosition:selectionEnd];

    return NSMakeRange(location, length);
}




uitextrange