获取UITextView中特定字符串每次出现的Y坐标以进行行编号

时间:2013-10-27 02:56:53

标签: ios objective-c uitextview

我正在尝试获取UITextView中每个\n字符的y位置,这样我就可以在UITextView旁边对齐行号以获得准确的行号。我想做的是获取\n每次出现的Y坐标数组。

目前,我可以获取当前单词的CGSize,但我不太确定如何调整它以获得特定单词每次出现的Y坐标。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSRange aRange = self.editorText.selectedRange;
if(range.location<self.editorText.text.length)
{
    NSString * firstHalfString = [self.editorText.text substringToIndex:range.location];

    NSString *temp = @"s";
    CGSize s1 = [temp sizeWithFont:[UIFont systemFontOfSize:15]
                 constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, MAXFLOAT)  // - 40 For cell padding
                     lineBreakMode:UILineBreakModeWordWrap]; // enter you textview font size

    CGSize s = [firstHalfString sizeWithFont:[UIFont systemFontOfSize:15]
                           constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, MAXFLOAT)  // - 40 For cell padding
                               lineBreakMode:UILineBreakModeWordWrap]; // enter you textview font size


    //Here is the frame of your word in text view.
    NSLog(@"xcoordinate=%f, ycoordinate =%f, width=%f,height=%f",s.width,s.height,s1.width,s1.height);

    CGRect rectforword = CGRectMake(s.width, s.height, s1.width, s1.height);
    // rectforword is rect of yourword


}
else
{
    // Do what ever you want to do

}

return YES;
}

我不确定的主要部分是以每次出现的方式检索其坐标。

有办法做到这一点吗?或者是否有更简单的方法来实现行号?

1 个答案:

答案 0 :(得分:1)

自定义解析你的NSString并将#)附加到每行的开头一个选项吗?

这是一个非常简单的字符串解析和操作来实现,但它还有一个额外的好处,就是不必关心yCoordinates和其他基于布局的杂乱参数。