在UITextView中获取行范围的更好方法

时间:2014-08-02 16:27:53

标签: objective-c search line-numbers uitextposition

现在,我可以通过使用带有段落粒度的​​标记生成器循环来获取包含n行的UITextView中每行的文本范围。不幸的是,这意味着我在文本中第m行的搜索算法是n阶。除了使我的算法记录n之外,有没有更简单的方法来找到范围?以下是我现在找到文本范围的方法:


- (UITextRange *)textRangeOfLineAtIndex:(NSUInteger)index {

    UITextPosition *position = self.beginningOfDocument;

    NSUInteger lineCount = 0;
    while([self comparePosition:self.endOfDocument toPosition:position] == NSOrderedDescending && lineCount < index) {
        position = [self.tokenizer positionFromPosition:position toBoundary:UITextGranularityParagraph inDirection:UITextStorageDirectionForward];
        ++lineCount;
    }

    return [self rangeEnclosingPosition:position withGranularity:UITextGranularityParagraph inDirection:UITextStorageDirectionForward];

}

0 个答案:

没有答案