2017-05-30 4 views
1

Ich bin neu bei Swift und habe Probleme mit dem Ausblenden der Tastatur, wenn sich das Textfeld in einer benutzerdefinierten Tabellenansichtszelle befindet. Ich denke, dass das Problem davon herrührt, dass die textField-Referenz in der TableViewCell-Klasse ist, aber ich kann nicht sicher sein. Ich habe alles versucht und bin ein wenig verloren.Ausblenden der Tastatur beim Drücken der Eingabetaste oder Klicken auf TableView mit benutzerdefinierter TabelleViewCell

Mein Code besteht aus:

TableViewCell:

import UIKit 

class TableViewCell: UITableViewCell, UITextFieldDelegate 
{ 
    @IBOutlet weak var userText: UITextField! 
    @IBAction func answers(_ sender: UITextField) 
    { 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) 
    { 
     super.setSelected(selected, animated: animated) 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.delegate = self 
     textField.resignFirstResponder() 
     return true 
    } 
} 

und Tableviewcontroller:

import UIKit 

class TableViewController: UITableViewController, UITextFieldDelegate 
{ 
    var textfield = TableViewCell() 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     let myText = textfield.userText 
     textField.resignFirstResponder() 
     myText?.delegate = self 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     self.view.endEditing(true) 
     return false 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return 3 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 

     return cell 
    } 
} 

Ich habe versucht, die textFieldShouldReturn Funktion aus beiden Klassen läuft, aber ich kann es nicht an die Arbeit .

+0

Mögliche Duplikat von [ Schließen Sie die iOS-Tastatur, indem Sie mit Swift eine beliebige Stelle berühren (https://stackoverflow.com/questions/24126678/close-ios-keyboard-by-touching-anywhere-using-swift) – Adrian

+0

Hast du den textField.resignFirstResponder ausprobiert? –

Antwort

0

entfernen UITextFieldDelegate und delegieren func von UITableViewCell dann gesetzt Delegierten in UITableViewController -> innen

`override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)as! TableViewCell 

    cell.userText.delegate = self 
    return cell 
} 

dann wollen Sie textFieldShouldReturn in UITableViewController hinzuzufügen und return true versuchen, diese

+0

Das hat es dir danken !!! –

0

In Ihrem textFieldShouldReturn Funktionseinsatz textField.resignFirstResponder

oder in Ihrem viewDidLoad Einsatz tableView.keyboardDismissMode = .onDrag oder .interactive so entlässt es, wenn Sie blättern, wenn Sie

+0

func textFieldShouldReturn (_ textfield: UITextField) -> Bool { textField.resignFirstResponder() self.view.endEditing (true) return true } hat fix immer noch nicht für mich –

+0

Ich denke, es hat etwas mit dem zu tun hat, Referenz für TextField in der separaten TableViewCell-Klasse, aber ich kann nicht sicher sein oder wie es zu beheben ist. –

+0

Haben Sie die Option zum Ablehnen beim Ziehen ausprobiert? Das ist die am häufigsten verwendete heutzutage nur wischen nach unten und es schließt die Tastatur –

0

diese Funktion in Ihrem Tableview Zelle Klasse hinzufügen möchten, weil Sie Delegaten in tableviewCell die erklärt haben, Klasse.

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField. resignFirstResponder() 
     return false 
    } 
Verwandte Themen