Создание текстового редактора

Создание текстового редактора

25.12.2020
# Для_разработчиков Разработка
Author avatar
Александр СавлукiOS разработчик

Часто разработчики сталкиваются с необходимостью создания тестовых проектов для демонстрации своей компетенции. Одним из наиболее распространённых вариантов тестирования является создание текстового редактора – приложения, подобного блокноту, так как при его разработке можно продемонстрировать как обработку ввода/вывода данных, так и работу с хранилищем.

Итак, рассмотрим в качестве примера разработку приложения, реализующего функционал стандартных “Заметок” для iOS платформы. Среди его основных особенностей можно выделить:

  • синхронизацию информации с помощью облачного хранилища;
  • функцию форматирования текста;
  • а также создание списков с различными маркерами и чек-листов.

Выбор облачного хранилища

Для реализации хранилища, пожалуй, наиболее оптимальным решением является использование базы данных Cloud Firestore. Эта NoSQL база, разработанная компанией Google, обеспечивает синхронизацию данных, кэширование и работу в условиях нестабильного интернет соединения или в оффлайн режиме. Такой подход позволяет сосредоточиться на разработке функционала редактора заметок.

Создание текстового редактора

Форматирование списков и чек-листов

Прежде всего, главную сложность при разработке редактора подобного “Заметкам” iOS представляет функция создания форматированных списков и чек-листов. В частности, в нашем случае было нужно реализовать механизм распознавания списков в тексте и элемент интерфейса, выполняющий функции чек-бокса.

Создание текстового редактора

Так, для обработки текстовых данных используется подкласс NSTextStorage. Он позволяет реализовать необходимый функционал для работы с форматированными строками – NSMutableAttributedString.

Для форматирования списков было принято решение использовать регулярные выражения. Например, реализованы функции вставки маркеров списка, обнаружения начала нового списка и продолжения существующего.

Создание текстового редактора

Для архитектуры приложения был выбран паттерн MVVM. Использовался подкласс UITextView для редактирования вводимого текста до его отображения.

Для редактирования вводимого текста используется NSTextStorage, а также делегат UITextViewDelegate. Он помогает избегать багов, появляющиеся из-за переопределения методов NSTextStorage вместе с использованием автоисправления и автоматической замены строчных букв на заглавные.

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

Создание текстового редактора

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

Author avatar
Александр СавлукiOS разработчик
Поделись статьей в соцмедиа:
Рекомендуемые статьи
Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение