Я пытаюсь определить положение оси Y для определенных линий и добавить метку рядом с ними в NSTextView.Я использую glyphRangeForCharacterRange.
Это вроде работает, но текстовое представление может иметь много текста (даже ~ 4000-5000 строк) и обернуто вставками.Когда я прокручиваю к вещам, которые находятся вне поля зрения, результаты неверны.Кажется, чтобы вернуть значения без переноса, или я так понимаю.Если я обновлю позиции при прокрутке до соответствующего текста, они будут правильно рассчитаны.
Это код без дополнительных смещений:
NSRange characterRange = NSMakeRange(startPosition, length);
NSRange range = [[self.textView layoutManager] glyphRangeForCharacterRange:characterRange actualCharacterRange:nil];
label.frame = rect;
NSRect rect = [[self.textView layoutManager] boundingRectForGlyphRange:range inTextContainer:[self.textView textContainer]];
Та же проблема возникает, если япопробуйте установить позиции меток после пробуждения документа, поэтому я рассчитываю метки при первом нажатии клавиши, что не слишком приятно.
Как лучше всего обойти это?