2017-05-30 32 views
1

我是新来的Swift和一直在隐藏键盘时textField是在自定义tableview单元格上挣扎。我认为这个问题源自于TableViewCell类中的textField Reference,但我无法确定。我尝试了一切,有点迷失。隐藏键盘时按下输入或在自定义tableViewCell上点击tableViewCell

我的代码包括:

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 
    } 
} 

和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 
    } 
} 

我试图运行来自两类的textFieldShouldReturn功能,但我不能让它开始工作。

+0

的可能的复制[通过触摸任何地方使用Swift来关闭iOS键盘](https://stackoverflow.com/questions/24126678/close-ios-keyboard-by-touching-anywhere-using-swift) – Adrian

+0

你尝试过textField.resignFirstResponder吗? –

回答

0

删除UITextFieldDelegate并委派从UITableViewCell 然后设置委托FUNC在UITableViewController - >内

`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 
} 

那么你要在UITableViewController添加textFieldShouldReturn并返回true试试这个

+0

这样做谢谢你! –

0

textFieldShouldReturn函数里面插入textField.resignFirstResponder

或者在你的viewDidLoad插入tableView.keyboardDismissMode = .onDrag.interactive滚动时,如果你想

+0

FUNC textFieldShouldReturn(_文本框:的UITextField) - >布尔{ textField.resignFirstResponder() self.view.endEditing(真) 还真 }仍然没有解决它,我 –

+0

我觉得它有什么做的参考为textField在单独的TableViewCell类,但我无法确定或如何解决它。 –

+0

您是否尝试过关闭拖拽选项?这是现在最常用的只是向下滑动,它关闭键盘 –

0

在您的tableView细胞类添加这个功能,因为你已经在tableviewCell申报的委托,因此驳回类。

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