Получить информацию о линии из UITextView и NSLayoutManager

Для того, чтобы поддержатьUIAccessibilityReadingContent протокол, мне нужен мой UITextView, чтобы ответить на вопросы о его линиях. Вот методы протокола, которые мне нужно реализовать:

accessibilityLineNumberForPoint: <- при условии координаты, вернуть номер строкиaccessibilityContentForLineNumber: <- вернуть текст данной строкиaccessibilityFrameForLineNumber: <- учитывая номер строки, вернуть ее кадрaccessibilityPageContent <- Весь текстовый контент. Что у меня есть. :)

Я полагаю, что NSLayoutManager может помочь мне, но я не настолько опытен с этим. Я понял кое-что из этого (я думаю), но мне все еще нужна помощь.

У Apple есть пример кода (Вот), который может получить мне количество строк в текстовом представлении:

NSLayoutManager *layoutManager = [textView layoutManager];
unsigned numberOfLines, index, numberOfGlyphs =
        [layoutManager numberOfGlyphs];
NSRange lineRange;
for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
    (void) [layoutManager lineFragmentRectForGlyphAtIndex:index
            effectiveRange:&lineRange];
    index = NSMaxRange(lineRange);
}

Я полагаю, что сlineRangeвыше, я могу рассчитать количество строк, используя этот метод наNSLayoutManager:

- (NSRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container

И учитываяlineRanges Я должен быть в состоянии рассчитать номер строки для точки, используя (найдяlineRange который содержит индекс глифа:

- (NSUInteger)glyphIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceThroughGlyph:(CGFloat *)partialFraction

Так что остается, как я могу получить содержимое строки (какNSString), учитывая номер строки?

Ответы на вопрос(1)

Ваш ответ на вопрос