2016-11-15 10 views
0

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

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, такие как заметки и почта, могут обрабатывать атрибуты просто отлично, но страницы настаивают на их отбрасывании. Как я могу создать данные, которые можно обрабатывать по страницам, ключевым словам и цифрам?

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

UPDATE2: Это, как представляется, ошибка в том, как страницы принимают данные из буфера обмена.

+0

Аналогичный, но старый вопрос: [Копия NSAttributedString на монтажный стол] (http://stackoverflow.com/questions/2581407/copy-nsattributedstring-to-pasteboard/2585327#2585327) – Willeke

+0

Скопировать в страницах и вставить в страницах также изменяется стиль. Похож на ошибку в страницах для меня. – Willeke

+0

Это действительно ошибка на страницах. – sakurashinken

ответ

0

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

+0

Но можете ли вы работать с ним? В этом потоке нет указаний на просмотр буфера обмена. У Apple есть образец, который поможет вам, см. Добавление к моему ответу. НТН – CRD

1

Никто не предложил вам что-нибудь еще, так что здесь подход не является ответом как таковой:

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

Не допускайте, проверяйте.

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

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

Добавление

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

НТН