这是this question的后续行动。我正在尝试创建一个双倍行距的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;
}
现在选择矩形的大小合适,但是用于生长的蓝色手柄和缩小选择区域被困在左上角。
知道是什么原因导致手柄处于错误的位置吗?我可以尝试将它们放在正确的位置?