1

这是对这个问题的跟进。我正在尝试创建一个用于输入文本的双倍行距 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;
}

现在选择矩形的大小是正确的,但是用于扩大和缩小选择区域的蓝色手柄被困在左上角。

手柄被困在左上角。 选择高度正确

知道是什么导致把手放在错误的位置吗?我可以尝试将它们放在正确的位置吗?

4

0 回答 0