2010-03-07 11 views
25

¿Podría alguien explicarme cuáles son las principales diferencias entre NSTextField y NSTextView? Sé que NSTextView tiene más funciones y generalmente se usa para textos más largos, y NSTextField se usa generalmente para campos de texto plano de una línea, pero si lo entiendo correctamente, NSTextField también se puede usar con cadenas atribuidas y con varias líneas ...NSTextField o NSTextView?

Lo que necesito específicamente es un control que muestre el texto de los mensajes dentro de una línea de tiempo como en Tweetie o cualquier otro software similar. Los únicos requisitos que tengo son:

  • debe mostrar texto en alrededor de 1-4 líneas
  • que debería ser capaz de mostrar enlaces en el texto (como yo lo entiendo, esto debe ser simple en ambos controles - http://developer.apple.com/mac/library/qa/qa2006/qa1487.html)
  • debería permitir al usuario seleccionar y copiar el texto
  • NO debe permitir al usuario desplazarse por el texto, editar el texto o mostrar el menú contextual que normalmente aparece en los campos de texto editables, ni siquiera debería mostrar un cursor de texto en este campo

Con tales requisitos, ¿es mejor para mí usar un NSTextField o NSTextView? ¿Es suficiente NSTextField o NSTextView tiene algo importante que NSTextField no tiene?

Respuesta

32

¿Podría alguien explicarme cuáles son las principales diferencias entre NSTextField y NSTextView? Sé que NSTextView tiene más funciones y generalmente se usa para textos más largos, y NSTextField se usa generalmente para campos de texto plano de una línea, pero si lo entiendo correctamente, NSTextField también se puede usar con cadenas atribuidas y con varias líneas ...

Técnicamente cierto, pero normalmente utiliza campos de texto para los valores que son texto sin formato y generalmente solo una línea. (Manejar múltiples líneas, como un campo de texto puede aceptarlas. Por lo menos, tira de los saltos de línea de una manera que tenga sentido para lo que está haciendo con el texto.)

  • debe mostrar texto en aproximadamente 1-4 líneas

NSTextView.

NSTextView. El soporte de enlaces en un NSTextField es complicado.

  • debe permitir al usuario seleccionar y copiar el texto

De cualquier funcionará para esto.

  • NO se debe permitir al usuario desplazarse por el texto,

NSTextField o NSTextView sin NSScrollView. Puede hacer esto último en IB arrastrando una vista de texto desde la Biblioteca y luego seleccionando "Objetos inconexos" en el menú Diseño.

editar el texto,

De cualquier trabajará para esto.

o mostrar el menú contextual que aparece generalmente en los campos de texto editables,

Sí, lo que debería. Siempre debe ofrecer elementos de menú como "Copiar" y servicios de solo lectura. O el control debería hacer esto por ti; no luches esto.

ni siquiera debería mostrar un cursor de texto en este campo

De cualquier trabajará para esto.

Si deja seleccionada la opción (que generalmente debería), mostrará un cursor si el usuario hace clic en el campo. Esta es una característica, ya que indica dónde está el anclaje de selección para la selección de desplazamiento-⌘-flecha.

Con tales requisitos, ¿es mejor para mí usar un NSTextField o NSTextView?

Yo usaría NSTextView.

+1

Gracias por la información. Parece que todo está funcionando bien ahora, también logré desactivar el cursor de texto usando shouldDrawInsertionPoint. Una cosa que no pude hacer fue convencerlo de que siempre muestre un cursor de flecha en lugar de uno en forma de X, pero puedo vivir con eso ... –

+1

@Persides: ¿en forma de X? ¿Te refieres a la viga en I? Puede intentar enviar 'descartarCursorRectos' a la vista de texto. –