Получите NSMutableAttributedString в пакете обслуживания Mac

Я создаю пакет Mac .service, который получает расширенный текст из приложений. У TextEdit и заметок, похоже, нет проблем с записью расширенного текста в общий монтажный стол, но когда те же данные доставляются в служебный монтажный щит, в строке отсутствуют атрибуты. Это проблема с реализацией сервиса в этих программах или есть способ обойти это? Вот код, который я использую для доступа к монтажной панели:

- (void)strikeService:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error{

// Test for strings on the pasteboard.
NSMutableAttributedString *pboardString;
NSMutableAttributedString *output;
NSDictionary *options = [NSDictionary dictionary];
NSArray *classes;

classes = [[NSArray alloc] initWithObjects:[NSAttributedString class], nil];
NSArray *attributedStrings = [pboard readObjectsForClasses:classes options:options];
if (attributedStrings != nil) {
    pboardString = [[NSMutableAttributedString alloc] initWithAttributedString:[attributedStrings objectAtIndex:0]];
}


classes = [[NSArray alloc] initWithObjects:[NSString class], nil];
NSArray *strings = [pboard readObjectsForClasses:classes options:options];
if (strings != nil && attributedStrings == nil) {
    pboardString = [[NSMutableAttributedString alloc] initWithString:[strings objectAtIndex:0]];
}
output = ...// do something with input

// Write the formatted string onto the pasteboard.
[pboard clearContents];
[pboard writeObjects:[NSArray arrayWithObject:output]];

}

В основном моя проблема заключается в том, что pboardString не имеет атрибутов, если я не получаю из общего монтажного стола текстовые сообщения и заметки. Почему это и как я могу это исправить?

ОБНОВЛЕНИЕ: Из вызова [типы доски] следует, что при вызове из службы единственными UTI, которые возвращаются на монтажную панель, являются NSStringPboardType и public.utf8-plain-text в Notes и TextEdit, но когда вызывается общий буфер обмена, тогда эти программы публикуют тип данных public.rtf. Таким образом, служба не может получить доступ к атрибутам, но может публиковать приписанные строки обратно в приложение. Есть ли способ найти строковые атрибуты выделенного текста?

0 ответов

Другие вопросы по тегам