2015-12-09 12 views
9

eingegeben aktualisieren Ich habe andere examples, wo wir die UITableViewCell Höhe basierend auf wachsenden UITextView aktualisieren können, die tatsächlich für mich arbeitet. Das Problem, mit dem ich konfrontiert bin, ist, ich habe mehr Untersichten unter UITextView innerhalb einer UITableViewCell. Auf diese Weise wird die Höhe der Zelle aktualisiert, aber die Position der Teilansichten bleibt unverändert, was eine Überschneidung von UITextView und den Untersichten zur Folge hat. Nur um zu erwähnen, verwende ich nicht automatisches Layout.
Wie behebe ich das?
Dies sind die drei Screenshots, die zum Verständnis meiner Frage helfen:Wie UITableViewCell Höhe wegen Text in UITextView

1. Vor dem Textview angezeigt wird:

enter image description here

2. Nach Textview wird angezeigt:

enter image description here

3. Nachdem der Text eingegeben wird:

enter image description here

+0

In Ihrer Tabellenansicht Zelle setzen Sie alle Ihre Unteransicht (die fest bleiben) in einer Ansicht und wenn Ihre UITextview Höhe ändern (erhöhen/verringern) setzen Sie diese Ansicht y Position unter UITextview. –

+0

Welche Sprache benutzen Sie? –

Antwort

2

Sind Sie Auto-Layout verwenden? Ich habe das schon mehrmals mit UITableViewCells gemacht, obwohl es hauptsächlich mit UILabel und nicht mit UITextView gemacht wurde.

Ihr Problem wurde möglicherweise durch das automatische Layout behoben. Sie ordnen alle Ihre Subviews (innerhalb von UITableViewCell) relativ zueinander an. Wenn eine Ansicht (z. B. UITextView) die Größe ändert, werden die anderen Ansichten dann relativ zu dieser Ansicht angepasst. Hier sind ein paar nützliche Links.

Dies ist nicht spezifisch für UITableViewCell, hat aber viele gute Beispiele für verschiedene Szenarien. Stanford University Entwicklung iOS 7 Apps: Vorlesung 9 - Animation und Autolayout https://www.youtube.com/watch?v=r1sc7NI6-wo

+0

Ich verwende kein automatisches Layout. Und wenn ich es jetzt ändere, wird es eine große Veränderung sein. – Nitish

+0

Ich verstehe, dass einige Ansichten zu schwierig sind, um auf das automatische Layout umzustellen. Denken Sie daran, dass Sie Federn und Streben zusammen mit dem automatischen Layout verwenden können. Es muss nicht unbedingt der eine oder der andere sein. Sie können auch versuchen, eine benutzerdefinierte UIView (.xib) zu implementieren, die zwar automatisch erstellt wird, aber eine untergeordnete Ansicht darstellt, die Federn und Struts verwendet, um zu isolieren, wie Sie das Layout ausführen. – xdeleon

+0

Ich erstelle UITableViewCell Subviews von Code in CellForRowAtIndex und nicht durch Xib. – Nitish

3

Ich nehme an, Sie Auto-Layout für diese Zelle verwenden (aber wir könnten ein Codebeispiel oder Xcode Screenshot verwenden Sie speziell zu helfen). Wenn Sie die automatische Layout verwenden, sollten Sie sicherstellen, dass:

  1. Sie haben eine Einschränkung zwischen dem UITextView und den anderen UIView Subviews darunter in der Zelle
  2. Die anderen UIView Subviews sind schließlich gezwungen zu der Boden der Zelle.
+0

Ich verwende kein automatisches Layout. Und wenn ich es jetzt ändere, wird es eine große Veränderung sein. – Nitish

+0

Screenshots hinzugefügt. – Nitish

+0

Sie müssen automatische Layouts verwenden, die die Lücke anpassen. –

3

Da UITableViewCell s wieder verwendet werden, werden Sie feststellen, dass, wenn Objekte in den contentView Hinzufügen, werden diese Objekte auch ohne entfernt wiederverwendet werden, um überlappende Subviews führt. Die Art und Weise, um dies es Ihre cellForRowAtIndexPath mit dem folgenden Code zu starten:

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    for (UIView * view in [cell.contentView subviews]) { 
//  clears the cell before reusing 
     [view removeFromSuperview]; 
    } 

Hoffnung, das hilft.

Verwandte Themen