UITextView的位置

时间:2010-04-16 13:49:35

标签: iphone cocoa-touch uikit uitextview

有没有办法在UITextView中找到ypos,或/并找到当前标记处于活动状态的行?

的问候。

2 个答案:

答案 0 :(得分:2)

你需要做一些计算  通过

找到光标位置
NSRange cursorPosition = [tf selectedRange];
光标位置的

子串使用此子字符串来计算字符串的宽度

sizeWithFont:constrainedToSize: 

然后将它除以你的TextView宽度的宽度..它会给你光标所在的行...它在逻辑上似乎是正确的......没有尝试过...尝试它让我知道是否它是否有效..

答案 1 :(得分:1)

类似的东西:

- (int) getCurrentLine: (UITextView *) textView{
    int pos = textView.selectedRange.location;
    NSString *str =textView.text;
    NSCharacterSet *charset = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    int num = pos;
    for (; num< str.length; num++){
        unichar c = [str characterAtIndex:num];
        if ([charset characterIsMember:c]) break;
    }
    str = [str substringToIndex:num];

    CGSize tallerSize =  CGSizeMake(textView.frame.size.width - 16, 999999);
    CGSize lc1 = [@"Yyg" sizeWithFont: textView.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
    CGSize lc = [str sizeWithFont: textView.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
    lc.height = lc.height / lc1.height;
    return lc.height;
}