2016-09-21 7 views
0

я прочитал этот вопрос: How to hide keyboard in swift on pressing return key?Чтобы убрать клавиатуру, есть ли разница между использованием `resignFirstResponder` и` endEditing`?

и в основном есть 2 способа ответить:

  • self.view.endEditing(true)
  • textField.resignFirstResponder()

Они оба получают работу независимо друг от друга. Но есть ли у них какие-либо другие различия/оговорки или места, в которых один работает, а другой - нет?

ответ

0

self.view.endEditing(true) Менее эффективен, потому что он будет циклически проходить через всю иерархию представлений и гарантирует, что все, что может быть первым, будет отменено.

Если вы знаете, какой предмет в настоящее время является ответчиком, более эффективная и лучшая практика - называть его resignFirstResponder.

+0

ОК, но если у меня есть несколько текстовых полей, таких как: firstName, LastName, Address и т. Д., А затем в конце у меня есть кнопка ** 'submit' **, будет делать' self.view.endEditing' лучше выбор – Honey

+1

@Honey, так как не все эти текстовые поля могут быть первым ответчиком в то же время, когда выбрано 'submit', только один будет первым ответчиком, поэтому вы должны называть его' resignFirstResponder'. В то время как я не думаю, что вы столкнетесь с каким-либо воздействием на производительность, используя «endEditing», обычно лучше «практиковать», чтобы знать, какое текстовое поле активно и только уходит в отставку. – random

+1

Это действительно интересный вопрос. Я ** не вижу никакой причины ** использовать resignFirstResponder. Я считаю, что они будут обесценивать его в будущем. (Что касается аспекта эффективности, вы говорите о нескольких предметах, это не имеет значения.) (Если по какой-то причине вам захочется, вы можете вызвать 'endEditing' только для одного элемента.) – Fattie