WebView
admite, a través del WebEditingDelegate
, un mecanismo para que el delegado implemente un comportamiento personalizado para una variedad de acciones que recibe el WebView
(o el WebHTMLView
privado). Cuando una acción como:¿Cómo puedo reaccionar de manera significativa a un changeAttributes: paso de delegación desde WebView?
-(void)changeAttributes:(id)sender
es recibida en WebHTMLView
, se pasa a través con el método delegado:
-(BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)command
Desafortunadamente, el mecanismo no proporciona para el transporte de la "sender
" en el método de acción original.
Para la gran mayoría de las acciones, el remitente no es importante, pero para changeAttributes y changeFont, por ejemplo, el contrato requiere que "sender
" sea llamado por el destinatario para, p. convertAttributes:
o convertFont:
.
Para el caso changeFont
, resulta que llamar al [[NSFontManager sharedFontManager] convertFont:]
es suficiente, ya que casualmente este es el remitente.
En el caso changeAttributes
, en particular cuando se cambia el tachado, el remitente puede haber una clase privada "NSFontEffectsBox
" que presumiblemente corresponde a la subsección del panel de la fuente que es responsable de cambiar tachado/etc ajustes.
Desafortunadamente, al llamar al [[NSFontManager sharedFontManager] convertAttributes:]
NO se obtienen los cambios de atributos esperados. Esto deja un delegado que esté interesado en la aplicación de este método de manera significativa en un poco de un enigma:
WebKit no transmite el emisor, por lo que el delegado no puede hacer el contrato
[sender convertAttributes:]
llamada.La llamada
changeAttributes:
se envía a una clase privada WebKit,WebHTMLView
, que no puede ser una subclase de, por ejemplo, personalizar el comportamiento dechangeAttributes:
.El emisor de la llamada
changeAttributes:
,NSFontEffectsBox
, es una clase privada y no se puede acceder, p. como[NSFontEffectsBox sharedFontEffectsBox]
.
En resumen: no parece haber ninguna manera para que un desarrollador para anular de manera significativa el comportamiento de changeAttributes:
para un WebView
.
¿Alguna idea?
Un buen ejemplo de cómo hacer una pregunta. –
¿Crees que podrías publicar rastros de pila de los diferentes escenarios? –