Мне известны два фундаментальных подхода к созданию редактора форматированного текста в iOS 5:
Использование Core Text и пользовательского представления.У меня нет никакого опыта с этим подходом.
Используйте UIWebView (вместо UITextView) и атрибут contentEditable
HTML.Основная идея - загрузить пользовательский HTML-документ из каталога ресурсов вашего приложения.Минимум, который ему нужен, это:
TEXT_PLACEHOLDER
Чтобы инициализировать представление редактора форматированного текста: 1. Загрузите содержимое этого файла в NSMutableString
и замените строку TEXT_PLACEHOLDER текстом, который вы хотите редактировать.2. Отправьте сообщение loadHTMLString:baseURL:
в UIWebView с этой строкой HTML.
Теперь у вас есть UIWebView, отображающий ваш текст внутри div
с contentEditable
.На этом этапе вы сможете запускать касание вашего приложения по тексту, иметь курсор и добавлять / удалять текст.Следующим шагом является добавление функциональности форматированного текста.Это делается с помощью набора простых вызовов функций javascript.См. документацию Mozilla для contentEditable для отличного справочника.Вы также захотите добавить функцию Javascript в свой файл шаблона HTML, например, так:
function getHtmlContent() { return document.getElementById('myDiv').innerHTML; }
Таким образом, вы можете легко получить отредактированный текст как HTML, используя [myWebView stringByEvaluatingJavaScriptFromString:@"getHtmlContent()"]
.Вы также можете добавить элементы пользовательского контекстного меню, как показано на снимке экрана вашего вопроса.
Если у вас есть доступ к центру разработки Apple iOS, сеанс WWDC Редактирование текста в Safari на iOS говорит все об этом подходе.
Вариантом этого подхода является использование стороннего редактора форматированного текста, такого как TinyMCE.Я слышал об успешном внедрении этого в UIWebView в iOS 5. Опять же, это зависит от атрибута contentEditable.