2015-12-22 7 views
0

У меня есть пара UITextfields в каждой ячейке таблицы. Путем нажатия кнопки «Готово» или касания вне клавиатуры клавиатура должна быть убрана.UITextfield внутри UITableViewCells - убрать клавиатуру

Моя проблема: метод textFieldShouldEndEditing вызывается только при нажатии другого текстового поля, и клавиатура не будет удалена. Я думаю, что я реализовал необходимые части (методы делегата и протокола).

Кто-нибудь знает, чего я здесь не хватает ...?

Вот код (соответствующая часть):

class myVC: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {... 

Это установка ячейки ...

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let tcell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "tbCell") 

    let textfield: UITextField = UITextField(frame:... 

    switch (indexPath.section) { 
    case 0: ... 
    case 1: 
      textfield.text = section2[indexPath.row] 
      tcell.addSubview(textfield) 
      textfield.delegate = self 
      return tcell 

и этот метод протокола:

func textFieldShouldEndEditing(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     print("method is called") 
     return true 
    } 

Спасибо вы!

+0

вы можете использовать метод делегата textfieldshouldReturn и писать в нем textfield.resignFirstRsponder и вернуть истинное –

+0

Вы не выполнили какие-либо методы, которые будет отклонять клавиатуру, поэтому, конечно, ее не называют. Взгляните на http://stackoverflow.com/questions/5306240/iphone-dismiss-keyboard-when-touching-outside-of-uitextfield – Belle

+0

@ Rajan: Спасибо, это работает! Однако я не понимаю разницы с textFieldShouldEndEditing (с resignFirstResponder). Очевидно, это то, что люди предлагают в большом количестве ответов здесь и должны иметь тот же результат. – Netzer

ответ

1

Почему вы не пытаетесь textFieldShouldReturn делегировать UITextfield.

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
[textField resignFirstResponder]; 
return NO;} 
4

Я даю этот ответ в Objective-C, потому что я не использую Swift

tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 

когда вы прокручивание TableView и:

tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive; 

когда вы прикоснетесь вне TextField.

0

Swift 3,0

tableView.keyboardDismissMode = .onDrag 

или

tableView.keyboardDismissMode = .interactive 

 Смежные вопросы

  • Нет связанных вопросов^_^