Как программно изменить текстовые атрибуты в WebView? - PullRequest
0 голосов
/ 31 декабря 2010

Мне нужно выделить определенные сегменты текста в WebView.До сих пор я делал это, внедряя javascript в веб-представление с помощью [webView stringByEvaluatingJavaScriptFromString: jscript].Javascript добавляет тег к тексту, в котором я меняю цвет фона на желтый.Обычно это работает, но иногда я повреждаю HTML при вставке тега.Я бы предпочел использовать метод - (void) changeAttributes: (id) отправителя в WebView, который, как я понимаю, будет применять стиль таким образом, чтобы не нарушать базовый HTML.Для этого я сначала звоню

[webView searchFor:aString direction:YES caseSensitive:NO wrap:YES];

, чтобы установить выбор в веб-просмотре.Затем я вызываю

[webView changeAttributes:self];

Когда я отправляю это сообщение моему экземпляру WebView, он вызывает этот метод:

- (NSDictionary *)convertAttributes:(NSDictionary *)attributes {
   NSMutableDictionary *newAttrs = [[NSMutableDictionary alloc] initWithDictionary:attributes];
   NSColor *background = [NSColor yellowColor];
   [newAttrs setValue:background forKey:NSBackgroundColorAttributeName];
   return newAttrs;

}

, который должен изменить цвет фонавыделенный текст будет желтым, но это не так.Применяются ли стандартные текстовые атрибуты Какао к веб-просмотру?Этот метод предназначен для использования с этой целью, или я должен вернуться к JavaScript?

1 Ответ

0 голосов
/ 31 декабря 2010

Это атрибуты для NSFonts.Как описано в этого документа , последовательность событий обычно такова:

  1. [text/webView changeAttributes:obj].Обычно это делается самим obj.
  2. text/webView передает атрибуты шрифта в obj, используя [obj convertAttributes:...].
  3. obj возвращает атрибуты как хочет.
  4. text/webView устанавливает атрибуты шрифта соответственно.

В любом случае, я не буду рекомендовать этот подход.Я предполагаю, что вы на OS X, а не на iOS.Затем я бы предложил вам получить DOM-элементы, используя WebFrame s DOMDocument и установить стили напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...