这是对这个问题的跟进。我正在尝试创建一个用于输入文本的双倍行距 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;
}
现在选择矩形的大小是正确的,但是用于扩大和缩小选择区域的蓝色手柄被困在左上角。
知道是什么导致把手放在错误的位置吗?我可以尝试将它们放在正确的位置吗?