поскольку вы знаете, что приложение Mail в iOS 5 имеет богатый текстовый редактор, есть ли какой-либо возможный способ использования этой функции для обычного UITextView?
поскольку вы знаете, что приложение Mail в iOS 5 имеет богатый текстовый редактор, есть ли какой-либо возможный способ использования этой функции для обычного UITextView?
Элемент управления редактированием текста iOS 5 также присутствует в приложении заметок в iOS 4 (сделайте надпись на компьютере и синхронизируйте его, чтобы увидеть).
Это пользовательский элемент управления Apple, который они используют в своих приложениях, но он не публикуется ни в одном официальном API разработчика. Вероятно, в SDK, но поскольку он недокументирован, даже если вы его найдете и используете, Apple отклонит ваше приложение.
В принципе, если вы хотите использовать расширенный текстовый элемент управления, вам придется сделать свой собственный.
Изменить: Попробуйте использовать это: https://github.com/omnigroup/OmniGroup/tree/master/Frameworks/OmniUI/iPad/Examples/TextEditor/. Я не использовал его, поэтому я не знаю, насколько он будет работать. (Ссылка из на этот вопрос)
Я знаю два фундаментальных подхода к созданию богатого текстового редактора в iOS 5:
Используйте основной текст и пользовательский вид. У меня нет опыта такого подхода.
Используйте UIWebView (вместо UITextView) и атрибут contentEditable
HTML. Основная идея - загрузить пользовательский HTML-документ из каталога ресурсов приложений. Его минимальный минимум:
< div contentEditable > TEXT_PLACEHOLDER </div>
Чтобы инициализировать представление редактора расширенного текста:
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 Rich Text Editing в Safari на iOS рассказывает об этом.
Вариантом такого подхода является использование стороннего богатого текстового редактора, такого как TinyMCE. Я слышал о некоторых успехах с интеграцией этого в UIWebView в iOS 5. Снова это зависит от атрибута contentEditable.
Вот моя реализация. По-прежнему не добавлены функциональные возможности UIMenuController, но планируется добавить их в ближайшее время.
посмотрите https://github.com/gfthr/FastTextView, который является более хорошим редактором с открытым исходным кодом, чем редактор Omni