Вставка строки nsmutableattributed в общедоступный монтажный щит теряет атрибуты на страницах

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

    NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Yay, I'm a string"];

[str beginEditing];

[str addAttribute:NSUnderlineStyleAttributeName
               value:[NSNumber numberWithInt:NSUnderlineByWord]
               range:NSMakeRange(0,str.length)];

[str endEditing];

[pboard clearContents];
[pboard writeObjects:[NSArray arrayWithObject:str]];

Приложения не iWork, такие как заметки и почта, могут обрабатывать атрибуты очень хорошо, но страницы настаивают на их удалении. Как я могу создать данные из картона, которые могут быть обработаны по страницам, ключевым словам и номерам?

ОБНОВЛЕНИЕ: по- видимому, iWork применяет текущий стиль до первой новой строки текста, которая вставляется поверх уже существующего текста в документе. Я предполагаю, что стили абзаца стоят за этим, но был бы признателен за любую помощь здесь.

ОБНОВЛЕНИЕ 2: Кажется, это ошибка в том, как страницы принимают данные из буфера обмена.

2 ответа

Решение

Кажется, это ошибка в Pages, или предполагаемое поведение. https://discussions.apple.com/message/30971829?ac_cid=op123456

Никто еще ничего вам не предлагал, так что вот подход, а не ответ как таковой:

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

Не предполагайте, тестируйте.

Напишите простое приложение, которое позволит вам изучить, что находится в буфере обмена. Затем откройте TextEdit & Pages и скопируйте и вставьте вещи как внутри, так и между приложениями. Посмотрите, что находится в буфере обмена. Страницы вставляют определенное количество "совпадающего стиля", даже если "Вставить и сопоставить стиль" не выбраны.

Обратите внимание, что эта проблема не ограничивается вашим приложением, как вы увидите при копировании из TextEdit (или Word et al) в Pages. Ваша цель состоит в том, чтобы скопировать и вставить копии страниц на страницы, это может быть или не быть возможным.

добавление

Если вам нужна помощь с просмотром буфера обмена, у Apple есть пример кода для этого, ClipboardViewer. Просто сравните подчеркнутое слово при копировании из TextEdit и Pages. Довольно много различий, включая специфические типы данных iWork.

НТН

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