2016-08-10 3 views
0

Ich habe eine UITableView enthält UITableViewCell enthält eine UITextView.BecomeFirstResponder und geschätztRowHeight Inkompatibilität

wollte ich zwei Dinge:

  1. Benutzer Text in der UITextView eingeben und seine Dimension es wächst nach.
  2. Wenn Benutzer auf Hinzufügen klicken, wird die textView First Responder.

1.Die erste Ziel wurde als umgesetzt:

self.tableView.estimatedRowHeight = 44 
self.tableView.rowHeight = UITableViewAutomaticDimension 

func textViewDidChange(textView: UITextView) { 
    tableView.beginUpdates() 
    tableView.endUpdates() 
} 

und es funktioniert gut

2.Für die zweite Sache, ich schrieb einfach:

@IBAction func addButton(sender: AnyObject) { 
    let indexPath = NSIndexPath(forRow: 0, inSection: 0) 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MyCell 
    cell.cellTextView.resignFirstResponder() 
    cell.cellTextView.becomeFirstResponder() 
} 

und es funktioniert nicht ... :-(

Was ist noch mehr bi Zarre, ist das, wenn ich den ersten Block von Anweisungen lösche (besonders die estimatedRowHeight Anweisung), die becomeFirstResponder gut funktioniert.

Haben Sie irgendwelche Anhaltspunkte, um beide Funktionen auszuführen? Danke!

+0

Sie sind nicht die Zelle aus Ihrem Tisch zu bekommen. Du entkommst/erschaffst eine neue Zelle. – Desdenova

+0

1. wo ist dein Knopf in der Hierarchie, innerhalb der Zelle? 2. Wo nimmst du indexPath? –

+0

1. Die Schaltfläche befindet sich außerhalb der Tabellenansicht. 2. Entschuldigung, ich habe einige Zeilen der Funktion gelöscht. Ich werde es aktualisieren – Nahouto

Antwort

1

Sie benötigen cellForRowAtIndexPath Methode für get Zelle verwenden:

@IBAction func addButton(sender: AnyObject) { 
    let indexPath = NSIndexPath(forRow: 0, inSection: 0) 
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: false) // add this line if you wish to scroll for input 
    if let cell = tableView.cellForRowAtIndexPath(indexPath) as? MyCell { 
     view.endEditing(true) 
     cell.cellTextView.becomeFirstResponder() 
    } 
} 
Verwandte Themen