Почему textFieldShouldReturn автоматически подает в отставку и возвращает true?

-1

Я новичок в разработке iOS и читаю быстрый учебник от Apple. Мне кажется, что приведенный ниже код всегда необходим, так что, когда пользователь обращается к возврату в текстовом поле, он уходит в отставку с первого ответчика.

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

Я понимаю, что быстрый дает гибкость для программистов, чтобы контролировать это поведение, но в каких сценариях реального приложения мне не нужны эти две строки? Мне кажется, что я всегда нуждаюсь в них, так почему бы быстро не сделать это автоматически?

Теги:
textfield

2 ответа

1
Лучший ответ

Было бы очень неправильно, если бы Cocoa предположил, что нажатие Return должно автоматически отклонить клавиатуру. Это справедливо оставлено вам. Вероятно, пользователь ожидает, что это отклонит клавиатуру. И вы тоже, вероятно, предпочли бы, чтобы клавиатура не висела навсегда. Ну, resignFirstResponder отклоняет клавиатуру. Тем не менее, предположим, что что-то не так с текстом. Когда пользователь отбрасывает Return, вы можете проверить текст и не отклонять клавиатуру. Вместо этого вы можете поставить предупреждение, предупреждая о наличии проблемы. Вы не хотели бы быть переопределены каким-то автоматическим поведением рамки!

Кстати, есть и другие способы вызвать постукивание. Возврат, чтобы отклонить клавиатуру, отличную от реализации этого метода. В приложениях, которые используют эти другие способы, этот метод может вообще не отображаться.

  • 0
    Какие еще способы вы имеете в виду?
  • 0
    Например, событие «Завершить при выходе».
Показать ещё 2 комментария
-1

Это значение по умолчанию.

Однако, если вы предпочитаете "автоматическое возвращение возврата", вы можете теперь в Swift 2.0.

Вы все равно должны сделать свой класс совместимым с UITextFieldDelegate, и вам все равно нужно настроить делегат в Interface Builder.

Сделайте расширение протокола:

extension UITextFieldDelegate {
  func textFieldShouldReturn(textField: UITextField) -> Bool {
     NSLog("default behavior")
     textField.resignFirstResponder()
     return true
  }
}

Нет, что поведение по умолчанию для всего вашего приложения...

Вы все же можете переопределить метод в классе.

  • 0
    не работает....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню