Что означает термин "сессия" в терминах непрофессионала для свойства editDidBegin объекта UIControlEvent?

Следуя уроку, я предвосхитил следующий шаг урока и решил попробовать его самостоятельно. Цель состоит в том, чтобы подключить функцию IBAction к событию касания, чтобы после начала редактирования UITextField он обновлял UILabel. Я опередил учебник, в котором предлагается подключиться к опции "Редактирование изменено" в инспекторе соединений, но я неосознанно установил соединение с "Редактирование началось", потому что это имело смысл в устной форме.

Я запустил приложение, и моя UILabel не обновлялась. Поэтому я перечитал урок медленно и заметил, что мне нужно вместо этого использовать сенсорное событие "Редактирование изменено". Я хотел понять, почему изначально это не сработало, поэтому, проверив справочный материал Apple по UIControlEvents, я заметил, что он использует термины "сеанс редактирования". Кто-нибудь может объяснить, что такое сессия?

Надеюсь, таким образом я пойму, почему мой процесс не сработал с первой попытки.

class ConversionViewController: UIViewController {
    @IBOutlet var celsiusLabel: UILabel!
    @IBAction func fahrenheitFieldEditingChanged(textField: UITextField){
        celsiusLabel.text = textField.text
    }
}

заранее спасибо

1 ответ

Решение

"Сессия редактирования" - это время, когда пользователь начинает взаимодействовать с текстовым полем (текстовое поле получает фокус), до того момента, когда пользователь заканчивает взаимодействие с текстовым полем (текстовое поле теряет фокус).

Иными словами, когда пользователь нажимает на текстовое поле, отображается клавиатура (обычно), отправляется событие "Редактирование началось", и начинается сеанс. При изменении текста (с помощью набора текста, вырезания или вставки) каждое изменение вызывает событие "Редактирование изменено". Когда фокус покидает текстовое поле, клавиатура отклоняется, отправляется событие "Edited Did End" и сеанс заканчивается.

Обратите внимание, что "сеанс редактирования" - это просто концепция высокого уровня.

Ваш код не работал при подключении к событию "Редактирование началось", потому что текстовое поле не изменяется при отправке этого события. Это событие просто говорит вам, что текстовое поле теперь имеет фокус. Вот и все.

Другие вопросы по тегам