Руководство по внедрению сервисов Apple - пример кода не работает - PullRequest
2 голосов
/ 16 ноября 2011

Всякий раз, когда мне нравится серфинг в Интернете и я выделяю кучу текста, я вижу в контекстном меню пункт «Новый документ TextWrangler с выделением».

Как мне воспроизвести эту функцию с моим приложением, чтобы всякий раз, когда пользователь выбирает текст в любом другом приложении, он мог видеть пункт «Новый (мое приложение) документ с выделением» в контекстном меню и, нажав на него, он подает выбранный текст в мое приложение?

Обновление

Чтобы попытаться ответить на свой вопрос, я следовал примеру кода здесь: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/SysServices/Articles/providing.html

, которая реализует простой сервис шифрования rot13 для выделенного текста. но это не работает.

http://i43.tinypic.com/8z38qo.jpg http://i42.tinypic.com/2z4co0o.jpg

Хотя мой «Зашифрованный текст» отображается в меню системных настроек, например «Новый документ TextWrangler с выделением», как показано выше, он фактически не отображается в меню служб приложения или контекстном меню, вызываемом правой кнопкой мыши, когда выделен текст.

Может кто-нибудь сказать мне, почему пример кода в документации Apple не работает

@ PeterHosey здесь, с NSRequiredContext тоже:

http://i39.tinypic.com/51d06o.jpg

имя моего приложения называется "simpleEncrypt", и сообщение в точности совпадает с тем, которое скопировано из руководства по внедрению сервисов Apple.

- (void)simpleEncrypt:(NSPasteboard *)pboard
userData:(NSString *)userData error:(NSString **)error;

Ответы [ 2 ]

0 голосов
/ 27 ноября 2011

В Info.plist для моего приложения Translate Text , я использую NSStringPboardType в качестве типа отправки для каждой из своих служб.

Список системных UTI говорит о том, что современный эквивалент этого - public.utf8-plain-text, поэтому попробуйте изменить типы отправки и возврата вашей службы на

.

Если это сработает, возможно, было бы неплохо перечислить все варианты в виде простого текста. Они перечислены там в Справочнике по унифицированным идентификаторам типов; это типы, которые соответствуют public.plain-text.

0 голосов
/ 22 ноября 2011

Вам необходимо включить словарь NSRequiredContext в свой служебный словарь , который описывает, когда службу следует включить.Пока вы этого не сделаете, он отключен во всех контекстах по умолчанию.(Я не уверен, почему он по-прежнему не отображается даже после того, как вы его включили, но это обязательный первый шаг.)

...