Ответ 1
someTextField.resignFirstResponder()
resignFirstResponder()
полезно использовать в любое время, когда вы точно знаете, какое текстовое поле является первым ответчиком, и вы хотите отменить свой статус первого ответчика. Это может быть немного более эффективным, чем альтернатива, но если вы делаете что-то вроде создания пользовательского элемента управления, это может иметь большой смысл. Возможно, у вас есть текстовое поле, и когда нажата кнопка "Далее", вы хотите, например, избавиться от клавиатуры и представить сборщик дат. Здесь я бы определенно использовал resignFirstResponder()
self.view.endEditing(true)
Я обычно резервирую это для сценариев, когда мне просто нужно очистить клавиатуру, независимо от того, что происходит в данный момент, по любой причине. Может быть, у меня есть меню для переполнения? Перед тем, как это выйдет, независимо от того, что происходит, клавиатура должна уйти, поэтому я буду уверен, что все уйдет в отставку с первого статуса ответчика. Важно отметить, что endEditing()
будет просматривать всю иерархию подзаголовков и убедиться, что все, что является первым ответчиком, уходит в отставку. Это делает его менее эффективным, чем вызов resignFirstResponder()
, если у вас уже есть конкретная ссылка на первого ответчика, но если нет, это проще, чем найти это представление и уйти с него.