2012-06-27 13 views
7

Me gustaría tener un campo de texto como el campo de texto editor de expresiones en números:campo de texto de emergencia como en Números

enter image description here

Es muy similar a NSTokenField, pero NSTokenField sólo admite una lista delimitador separados de tokens, como el campo "Para:" en Mail.app.

enter image description here

tengo que integrar estos símbolos en el texto en lugares específicos, pero por lo demás tienen de ellos funcionan exactamente igual que NSTokenField (corrección borra una ficha, puede arrastrarlos etc.).

¿Hay algún control de 1ra o de 3 ª parte que haga algo como esto? No encontré nada.

De no ser así, ¿cómo recomendarías implementarlo? Use Core Text y reinvente la rueda (implemente NSTextField con un mejor soporte de token)? ¿O hay una mejor solución?

Respuesta

5

No creo que haya un control alternativo disponible para NSTokenField (bueno, tampoco pude encontrar uno hace un par de semanas).

Una posible opción podría ser seguir la solución presentada en el proyecto de ejemplo de Apple LayoutManagerDemo. Esto muestra una subclase de NSTextView capaz de detectar el movimiento del mouse sobre el texto. Instala y ejecuta la demostración para obtener la idea básica.

El ejemplo utiliza NSLayoutManager para detectar el movimiento del mouse; sin embargo, el código podría probablemente adaptarse para detectar secuencias de caracteres específicos en el texto, como los tokens en el campo de texto. Una vez que tenga los tokens y su ubicación en NSLocationManager, puede insertar su propia representación en función de las características de su token. Una posible solución podría ser usar NSTextAttachmentCell que se convertirá en un glifo dentro de su texto. La ventaja de utilizar NSTextAttachmentCell es que el sistema de texto de Cocoa lo trata como un glifo (puede seleccionarlo, sigue el formato, etc.). Al implementar drawWithFrame:inView:, puede agregar los diversos atributos visibles de cada token.

Cuestiones relacionadas