2010-05-18 1 views
2

Я только начинаю работу над новым проектом разработки iPhone/iPad, и мне нужно отобразить документ с богатым стилизованным текстом (потенциально со встроенными изображениями). Пользователь коснется документа, перетаскивая его, чтобы выделить отдельные слова или многострочные интервалы текста. Когда текст будет выделен, появится контекстное меню, позволяющее им изменять цвет выделения или добавлять заметки маркера (или другие различные биты структурированных метаданных).Как реализовать богатый редактор документов для iPhone

Если вы знакомы с добавлением комментариев к документу Word (или аннотированием PDF), то это то же самое. Но в моем случае типичный пользователь будет тратить много часов в приложении, добавляя тысячи (в некоторых случаях, десятки тысяч) небольших аннотаций к центральному документу. Все эти биты метаданных будут храниться локально в ожидании синхронизации с удаленной веб-службой.

Я прочитал другие советы, в которых разработчики предлагают создать элемент управления UIWebView и передать ему строку HTML. Но это кажется неудобным, особенно со всей чувствительностью к контексту, которую я хочу включить.

Во всяком случае, я новичок в разработке iPhone и Objective-C, хотя у меня есть десять лет опыта разработки программного обеспечения, используя различные языки на разных платформах, поэтому я не беспокоюсь о том, записывание новый функциональность с нуля.

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

ответ

2

С iPad вы можете использовать Core Text.

Не знаю, что предложить для iPhone. Я не заметил никакой отличной обработки текста в любых приложениях для чтения iPhone, помимо рендеринга HTML или PDF. Я подозреваю, что вам придется писать что-то с нуля.

1

Если вы хотите работать с iPhone OS 3.2 или выше, вы можете взглянуть на latest release Omni Group своих open source framework. Он включает в себя образец богатого текстового редактора на основе Core Text.

2

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

Я делаю это все в javascript внутри UIWebView. Это был мой последний выбор, как сделать текстовый редактор. Я должен был быть обратно совместимым (без CoreText) и выпускать через iTunes (без личного WebKit), поэтому я остался с javascript.

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

Javascript имеет полный доступ к событиям касания, жестам и модели DOM. Он лучше контролирует UIWebView, чем вы получаете от стороны Cocoa. Вы можете с некоторыми трюками получить двунаправленный канал связи с хост-приложением. У PhoneGap есть хорошая реализация этого.

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

+0

Интересно. Как долго (и сложны) ваши документы? Сколько аннотаций вы разрешаете? Каково влияние производительности? Интересно, сколько разных идентификаторов вы можете внести в DOM, прежде чем все это рухнет под своим собственным весом ... – benjismith

+1

О, также ... вы упомянули что-то о распределении iTunes, чтобы не использовать подход «частного WebKit». Вы имеете в виду какую-то политику магазина приложений? Я не знаком с этим. Можете ли вы уточнить? Благодаря! – benjismith