2010-11-23 20 views
18

Quizás la hora sea tardía, pero no puedo encontrar dónde puedo establecer el orden de tabulación general de mi diálogo de visor de interfaz, al igual que con Visual Studio.Orden de tabulación en el constructor de interfaz?

¿echo en falta algo? El orden de las pestañas es todo torcido. Command-R para simular lo muestra.

+0

Por favor, edite su pregunta para incluir una captura de pantalla de la “orden de tabulación” que usted se refiere, y lo que se encuentra “torcida”. –

Respuesta

36

El término Cocoa que está buscando es "key view loop". Use los puntos de venta initialFirstResponder y nextKeyView para conectar las vistas en el orden en que desea tabularlas. Tenga en cuenta que los elementos que pueden recibir el foco del teclado cambiarán dependiendo de la configuración de acceso completo al teclado (en Preferencias del Sistema> Teclado); si está desactivado, las pestañas omitirán varios elementos en el ciclo de visualización de teclas.

Esto se menciona en la documentación here.

+1

Gracias. ¿Hay alguna manera de establecer el orden desde el propio constructor de interfaz? Quiero decir, si solo construyes algo desde cero, tendrá un orden de tabulación dado, según creo, en el orden de creación del control. Si agrego el último control en la "primera posición" en la vista en sí, seguirá siendo el último, aunque parece que debería haber sido el primero. Supongo que mi pregunta es si hay alguna manera de modificar ese orden desde el propio constructor de interfaz, no de forma programática si es posible. – JasonGenX

+3

Sí, cuando digo "puntos de venta ... conecto las vistas", estoy hablando de cosas que puedes hacer desde Interface Builder. Utiliza la salida initialFirstResponder de la ventana para establecer la "primera posición". –

+1

Para la posteridad, una esencia que resalta la respuesta actual e imprime el bucle de vista de teclas en la consola: https://gist.github.com/mittsh/6668638 –

2

Deje que las salidas se denominen a, byc. Mac orden de tabulación predeterminado es a -> b -> c -> a

Pero su orden de tabulación deseada es a -> c -> b ->a:

enter image description here

Usando IB:

Establecer a como el initialFirstResponder.

A continuación, coloque nextKeyView como a to c, c to b and c to a.

Pero prefiero usar códigos, aquí es más fácil agregar más. Al igual que en la interfaz de usuario compleja, puede haber más de 30 controles y es posible que necesites mezclar e incluso insertar un nuevo control.

para que pueda lograr lo mismo que:

[self.a setNextKeyView:self.c]; 
[self.c setNextKeyView:self.b]; 
[self.b setNextKeyView:self.a]; 
+0

Esto no funciona cuando algunas de las vistas están ocultas por defecto y se vuelven visibles más tarde. – Etan

+0

@Etan: para esos casos, debe tener cuidado configurando su próximo tiempo de ejecución KeyView según la vista que esté visible (en la parte superior). –

Cuestiones relacionadas