Использование многофункционального текстового редактора iOS 5 - PullRequest
12 голосов
/ 04 ноября 2011

Как вы знаете, приложение Mail в iOS 5 имеет расширенный текстовый редактор. Можно ли использовать эту функцию для обычного UITextView?

enter image description here

Ответы [ 4 ]

25 голосов
/ 07 ноября 2011

Мне известны два фундаментальных подхода к созданию редактора форматированного текста в iOS 5:

  1. Использование Core Text и пользовательского представления.У меня нет никакого опыта с этим подходом.

  2. Используйте 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.

2 голосов
/ 21 августа 2013

Вот моя реализация. До сих пор не добавлена ​​функциональность UIMenuController, но планируется ее добавить в ближайшее время.

https://github.com/aryaxt/iOS-Rich-Text-Editor

1 голос
/ 05 ноября 2011

Элемент управления для редактирования расширенного текста в iOS 5 также присутствует в приложении заметок в iOS 4 (создайте заметку для расширенного текста на компьютере и синхронизируйте ее для просмотра).

Это пользовательский элемент управления, созданный Apple, который они используют в своих собственных приложениях, но он не опубликован ни в одном официальном API разработчика. Возможно, он где-то находится в SDK, но поскольку он недокументирован, даже если вы его найдете и используете, Apple отклонит ваше приложение.

По сути, если вы хотите элемент управления расширенным текстом, вам придется создать свой собственный.

Редактировать: Попробуйте использовать это: https://github.com/omnigroup/OmniGroup/tree/master/Frameworks/OmniUI/iPad/Examples/TextEditor/. Я не использовал его, поэтому не знаю, насколько хорошо он будет работать. (Ссылка с на этот вопрос )

0 голосов
/ 16 сентября 2013

посмотрите на https://github.com/gfthr/FastTextView, который является более хорошим редактором с открытым исходным кодом, чем Omni editor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...