«Editing Did End» является частью класса UIControl, и UITextField наследует его от UIControl. Событие такого рода является одним из зарегистрированных событий касания, на которые реагирует этот класс, и способ сделать эту регистрацию - назначить действие (IBAction с использованием IB) для конкретного события.
Часть реализации протокола делегата обусловлена "механизмом расширения", предоставляемым протоколами делегата в шаблонах проектирования Какао. По сути, идея заключается в том, что вы можете обеспечить специальное поведение для объекта, в данном случае UITextField, без подклассов. Представьте, например, что вы хотите какую-то проверку перед тем, как разрешить кнопку «возврат». В таком случае вы будете вынуждены установить подкласс UITextField с жестко запрограммированным кодом проверки. И для каждого отдельного кода проверки вы будете вынуждены реализовать свой подкласс. Используя механизм делегирования, вы делегируете что-то еще (обычно контроллер представления владельца текстового поля) для выполнения этого «расширения класса» без подклассов. Таким образом, вы делаете настройку класса для каждого экземпляра.
Обратите внимание, что этот подход является последовательным: все, что рассматривается как «событие» (касание, касание, завершение редактирования, все, что связано с некоторым взаимодействием пользователя с дисплеем, а не с клавиатурой), подключается к классу с помощью механизм целевого действия UIControl. Все, что является «специфичным» для экземпляра (а не для класса!), Управляется с помощью делегата.