iOS UITextView: как создать текстовое поле ввода с двойным интервалом?

Это продолжение этого вопроса. . Я пытаюсь создать UITextView с двойным интервалом для ввода текста.

В моем пользовательском UITextView я перезаписал и -caretRectForPosition: чтобы ограничить высоту курсора. Но теперь, когда я выбираю текст, высота прямоугольника выделения все еще слишком велика: красный прямоугольник выделения слишком высок

Я попытался преодолеть это, переопределив параметр UIView -selectionRectsForRange. К сожалению, объекты в этом возвращаемом массиве — это UITextSelectionRects, который является неизменяемым подклассом. Поэтому я создал свой собственный подкласс, сделал высоту изменяемой и изменил ее в цикле следующим образом:

- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
    NSArray *originalSectionRects = [super selectionRectsForRange:range];
    NSMutableArray *newSelectionRects = [[NSMutableArray alloc] initWithCapacity:originalSectionRects.count];

    // For all the UITextSelectionRects
    for (UITextSelectionRect *selectionRect in originalSectionRects) {
        // Use one with a custom height
        DCTextSelectionRect *newSelectionRect = [[DCTextSelectionRect alloc] initWithTextSelectionRect:selectionRect rectHeight:self.font.lineHeight];
        [newSelectionRects addObject:newSelectionRect];
    }
    return newSelectionRects.copy;
}

Теперь прямоугольники выбора имеют правильный размер, но синие маркеры, используемые для увеличения и уменьшения области выбора, застряли в верхнем левом углу.

ручки застряли в левом верхнем углу. Высота выбора правильная

Любая идея, что заставляет ручки быть в неправильном месте? Что я могу попробовать, чтобы получить их в нужном месте?


person cdownie    schedule 16.10.2013    source источник
comment
Я нашел совершенно другое решение этой проблемы, но оно использует грубую силу для пересчета фрагмента строки прямоугольники при каждом изменении текста. Если бы я мог выяснить, что заставляет ручки перемещаться в верхний левый угол, это все равно было бы гораздо более эффективным (и предпочтительным) решением.   -  person cdownie    schedule 20.10.2013
comment
Вы можете прикрепить реализацию DCTextSelectionRect?   -  person greenfrvr    schedule 09.04.2018