2011-07-10 6 views

Répondre

5

UITextView possède une méthode setSelectedRange: (NSRange) plage.

Si vous savez où se trouve la ligne de chaîne 13, dites l'emplacement 237, puis faites: [textView setSelectedRange: NSMakeRange (237,0)];

Si vous avez besoin de savoir où se trouve la ligne 13, vous avez plus de travail à faire. Je commencerais par regarder sizeWithFont, en me rappelant de couper environ 16 points de la largeur de votre textView afin qu'OSO obtienne les sommes correctes. (Cela dit, si vous avez des sauts de ligne, puis trouver juste l'emplacement du 13 (ou n-ième) « \ n ».)

Mise à jour suivant votre plus question dans le commentaire

Il y a beaucoup de façons de trouver la position du nième \ n. L'extrait suivant n'est pas joli, mais il fera l'affaire. Vous pouvez également utiliser rangeOfString et parcourir le "\ n". Dans cet extrait, si la ligne cible est supérieure au nombre de lignes, elle place le curseur à la fin. Le code suppose ici que vous avez une propriété UITextView appelée userEntry.

int targetLine = 3; // change this as appropriate 0=first line 

NSRange range; 

NSString* exampleString = @"Hello there\nHow is it going?\nAre you looking for a new line?\nA new line in what?\nThat remains to be seen"; 

NSArray* separateLines = [exampleString componentsSeparatedByString:@"\n"]; 

if (targetLine < [separateLines count]) 
{ 
    int count = 0; 
    for (int i=0; i<targetLine; i++) 
    { 
     count = count + [[separateLines objectAtIndex:i] length] + 1; // add 1 to compensate \n separator 
    } 

    range = NSMakeRange(count, 0); 
} 
else 
{ 
    range = NSMakeRange([exampleString length], 0); // set to the very end if targetLine is > number of lines 
} 

[[self userEntry] setText: exampleString]; 
[[self userEntry] setSelectedRange:range]; 
[[self userEntry] becomeFirstResponder]; 
+0

alors comment puis-je trouver la nième occurrence de '\ n' dans un NSString? –

+0

Merci. J'ai décidé de compter à targetline-1 à la place parce que cela m'amène au début de la ligne (= fin de la ligne précédente) –

Questions connexes