iOS计算textField的光标偏移量

最近同事遇到一个挺变态的需求,虽然后面没使用这个方法,我还是封装了下。计算textField的光标偏移量。估计用到的不多,图一乐吧。

- (CGFloat)cursorOffset
{
    NSArray *textrect = [self selectionRectsForRange:[self selectedTextRange]];
    CGRect rect = ((UITextSelectionRect *)textrect[0]).rect;

    if (rect.origin.x > 100000) {
        CGSize size = [self boundingRectWithSize:CGSizeMake(0, CGRectGetHeight(self.frame))];
        if (self.textAlignment == NSTextAlignmentCenter){
            CGSize size = [self boundingRectWithSize:CGSizeMake(0, CGRectGetHeight(self.frame))];
            CGFloat width = CGRectGetWidth(self.frame);
            return width - (width - size.width)/2.0f;
        } else if (self.textAlignment == NSTextAlignmentRight){
            return CGRectGetWidth(self.frame);
        } else {
            return size.width;
        }
    }

    return rect.origin.x;
}

核心代码如下:

 NSArray *textrect = [self selectionRectsForRange:[self selectedTextRange]];
CGRect rect = ((UITextSelectionRect *)textrect[0]).rect;

通过获得选择的范围获得相应的rect,末尾的话是非常大的值,采用计算文字大小获得光标位置。
源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值