2017-05-30 70 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 
    }