Используйте NSFontPanel для изменения цвета текста и фона текста в WebView.
Приложение:
У меня есть приложение Mac в Mac App Store со встроенным WebView
, WebView содержит contenteditable
DIV выступает в качестве текстового редактора.
Цель:
Я хотел бы изменить цвет переднего плана и фона выделенного текста в WebView через NSColorWell
→ NSColorPanel
механизм.
Проблема:
Когда я нажимаю на цвет в NSColorPanel
, NSColorPanel
автоматически вызывает changeColor:
на первом респонденте.
Первый респондент - это частный класс WebKit, представляющий мой спорный DIV: WebHTMLView
,
Вышеуказанный механизм ВСЕГДА изменяет цвет переднего плана выделенного текста. Мне нужен способ решить, нужно ли менять цвет переднего плана или фона.
Идеальное решение:
Было бы здорово, если NSColorPanel
а также NSColorWell
можно настроить, чтобы не вызывать автоматически changeColor:
на первом респонденте, и пусть мой код обрабатывает изменение цвета.
Попробовал и потерпел неудачу:
- настройка
usesFontPanel = false
это не вариант, потому что этоWebView
неNSTextView
- Предлагаемые здесь пробные решения: подкласс NSButton как цветовой барьер и предотвращение прикосновения NSColorPanel к первому респонденту
- Создание подклассов WebView не помогает, первый респондент является частным классом WebKit
- Временное переключение первого респондента приводит к мерцанию (не приемлемо)
- Приложение должно быть совместимо с Mac App Store
1 ответ
Перехватить changeColor:
, задавать editingDelegate
веб-просмотра и реализации WebEditingDelegate
метод webView:doCommandBySelector:
,
например:
- (BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)selector {
if (selector == @selector(changeColor:)) {
if (self.foregroundColorWell.active)
return NO;
return YES;
}
return NO;
}