Это продолжение этого вопроса. а>. Я пытаюсь создать 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;
}
Теперь прямоугольники выбора имеют правильный размер, но синие маркеры, используемые для увеличения и уменьшения области выбора, застряли в верхнем левом углу.
Любая идея, что заставляет ручки быть в неправильном месте? Что я могу попробовать, чтобы получить их в нужном месте?