Как реализовать Rich Document Editor для iPhone - PullRequest
2 голосов
/ 18 мая 2010

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 18 мая 2010

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

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

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

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

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

2 голосов
/ 18 мая 2010

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

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

1 голос
/ 18 мая 2010

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

...