2010-04-16 6 views
2

Y at-il un moyen de trouver ypos dans un UITextView, ou/et de trouver quelle ligne ce marqueur est actuellement actif?UITextView position

Cordialement.

Répondre

2

vous devez faire quelques calculs trouver la position du curseur par

NSRange cursorPosition = [tf selectedRange]; 

sous-chaîne de la position du curseur utiliser cette chaîne de sous pour calculer la largeur de la chaîne par

sizeWithFont:constrainedToSize: 

puis diviser par la largeur de votre largeur TextView .. il vous donnera à quelle ligne votre curseur est ... Il semble logiquement correct ... ne l'ai pas essayé ... essayez-le laissez-moi savoir si cela fonctionne ou pas ..

1

Quelque chose comme ça:

- (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; 
}