在UITextView上获取特定行的文本

时间:2012-06-25 11:19:59

标签: ios text uitextview line

最后,我想知道UITextView中最后一个字符的位置。我能够通过使用以下内容找出y位置:

  

CGSize size = [textView.text                   sizeWithFont:textView.font                   constrainedToSize:CGSizeMake(textView.frame.size.width-16,10000)                   lineBreakMode:UILineBreakModeClip];

然而,为了获得x位置,我需要从textview的最后一行获取文本。我尝试从textView.text一次删除一个字符,直到size.height更改为实现该效果,但我意识到,当考虑到linebreak时,并不总是等于我想要的。

有人建议吗?我花了一整天的时间试图弄明白这个......

2 个答案:

答案 0 :(得分:2)

我认为通过使用caretRectForPosition在textview中获取光标的像素位置,我找到了一个解决方案。

// move cursor to the end of the text
textView.selectedRange = NSMakeRange([textView.text length], 0);
CGPoint cursorPosition = [textView caretRectForPosition:textView.selectedTextRange.start].origin;

答案 1 :(得分:0)

您可以像这样评估uitextview或uitextfield中的文字大小

    UIFont * myFont = [UIFont fontWithName:@"Gill Sans" size:19];
    CGSize textSize = [@"your text" sizeWithFont: myFont constrainedToSize:CGSizeMake(textFiled.frame.size.width, textFiled.frame.size.height) lineBreakMode:UILineBreakModeWordWrap];
    NSlog(@"this is your text size W=%f H=%f",textSize.width, textSize.height);