2017-01-08 3 views
3

Попытка скрыть клавиатуру iOS при нажатии клавиши возврата, но вместо этого она останавливается и дает мне ошибку, замеченную на изображении. Вот код, я использую:Как скрыть клавиатуру при нажатии клавиши возврата - Swift

@IBOutlet weak var scoreText: UITextField! 

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

enter image description here

ответ

9

Ваша проблема в том, что вы не делегируют TextField для того, чтобы использовать этот метод. Во-первых, ваш класс должен включать UITextFieldDelegate протокол:

class yourClass: UIViewController, UITextFieldDelegate{ ... } 

И в viewDidLoad добавить это так:

scoreText.delegate = self 

И тогда вы должны изменить это:

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

к этому:

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

Окончательный код:

class yourClass: UIViewController, UITextFieldDelegate{ 

@IBOutlet weak var scoreText: UITextField! 

override func viewDidLoad(){ 
    super.viewDidLoad() 
    scoreText.delegate = self 
} 

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

Если это не работает, проблема не textFieldShouldReturn функции. Проверьте розетки.

+0

Это все, что вам нужно сделать, чтобы она работала –

+0

У этой проблемы: http://i.imgur.com /PAWVdrb.png Кстати, зачем мне делегировать TextField, а не метку, кнопку и т. Д.? – stevetheipad

+0

@stevetheipad 1 - потому что функция ** textFieldShouldReturn ** включена в ** UITextFieldDelegate **; 2 - попробуйте добавить свой аргумент: ** self.view.endEditing (true) **, я, вероятно, пропустил это в своем ответе –

0

Попробуйте

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

Не повезло, такая же проблема. – stevetheipad

+0

@stevetheipad Установили ли вы, что ваш контроллер просмотра выполняет команду UITextField? – Mochi

+0

Извините, вы имеете в виду IBOutlet? Если да, то я добавил один из них для UITextField. – stevetheipad

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