2012-04-13 8 views
3

Ich habe eine benutzerdefinierte Zelle mit UITextView drin. Die Länge des Textes, den ich in dieses UITextView geladen habe, ändert sich von sehr kurz zu sehr lang. Also bitte, nicht sagen "verwenden Sie ein Label statt". Ich möchte meine Zellen in der gleichen Höhe behalten, aber vertikales Scrollen von UITextView verwenden, wenn der Text zu lang ist.Wie richtet man Text in UITextView vertikal aus?

Ich habe die Methode here versucht, aber da ich benutzerdefinierte Zelle Initialisierung in meinem cellForRowAtIndexPath Ereignis verwende, hat der Beobachter nicht funktioniert. Ich habe die gleiche Methode in meiner Zelle Klasse unter initWithStyle Funktion versucht, hat auch nicht funktioniert.

Was empfehlen Sie noch? Oder sollte ich diese Funktion anders machen? Jede Hilfe wird geschätzt.

Vielen Dank im Voraus.

+0

Sie folgende Posten beziehen kann, ist es für mich funktioniert. http://imagineric.ericd.net/2011/03/10/ios-vertical-aligning-text-in-a-uitextview/ – rishi

+0

@RIP, bitte lesen Sie den zweiten Absatz, ich habe bereits den gleichen Link in geteilt meine Frage und erklärte, warum ich es nicht schaffen konnte ... – kubilay

Antwort

1

In Ihrem Tableview Datasource -

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSUInteger row = [indexPath row]; 

    static NSString *CellIdentifier = @"myCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } else { // if there is already a subview, remove it 
     while ([[cell.contentView subviews] count] > 0) { 
      UIView *labelToClear = [[cell.contentView subviews] objectAtIndex:0]; 
      [labelToClear removeFromSuperview]; 
     } 
    } 


    UITextView *myTextView = // initialise your textView here, including setting its contentOffset 

    [cell.contentView addSubview:myTextView]; 

    return cell; 

} 
+0

Ich habe versucht, aber leere Zelle bekommen. Was denkst du über diesen Code? http://pastebin.com/7yKZr2T9 – kubilay

+0

Sie haben es nicht gesagt, wie groß Ihr TextView ist - es wird eine Größe von 0x0 haben. Sie müssen UITextView tun * myTextView = [[[UITextView alloc] initWithFrame: whateverFrame] Autorelease]; Außerdem funktioniert Ihr contentOffset falsch - Sie möchten wahrscheinlich, dass die x-Komponente auf Null gesetzt ist, und wenn Sie y auf die Höhe von textView gesetzt haben, wird es nach unten um die Höhe von textView verschoben, also Sie werde es sowieso nicht sehen! Ein Minuswert bedeutet, dass der obere Teil des textView über dem Ursprung liegt. – SomaMan

+0

nicht genau, wie Sie gesagt haben, aber vor allem so, ich habe es getan. Danke vielmals. – kubilay

2

verwenden -

CGSize textSize = [myText sizeWithFont:whateverFont constrainedToSize:myTextViewBox.frame.size lineBreakMode:UILineBreakModeWordWrap]; 

... dann die Content herauszufinden und legen Sie es, wie Sie die UITextView der Tabelle hinzufügen.

+0

danke, aber nicht sicher, ob ich es bekommen habe. Soll ich die Textansicht dynamisch hinzufügen? Hast du einen Beispielcode dafür? – kubilay

1

Here's a gist zeige ich gemacht, wie vertikal eine UITextView ausrichten

Verwandte Themen