2010-11-19 16 views
13

Me gustaría crear un nuevo teclado para el iPad.centrando un usuario en el iPad

He diseñado una vista que tiene las teclas y todo el trabajo subyacente para completar un cuadro de texto mientras el usuario presiona las teclas, y pasa el valor a la rutina de llamada cuando el usuario presiona el botón de retorno.

Todo esto funciona bien.

Ahora - Quiero crear esta vista como un popover.

que tienen las operaciones básicas completa (se eleva y es despedido)

pero ahora necesito un poco de ayuda de sintonía fina.

Aquí están mis preguntas ...

1) ¿Cómo se crea una ventana popover centrada en la pantalla sin una selección UIPopoverArrowDirectionAny?

2) Asegurar la ventana popover es el tamaño que creé con en el archivo XI ter (en la actualidad, se cambia el tamaño y elimina parte del tamaño de más a la derecha de la ventana)

Gracias
tony

Respuesta

57

Para presentarlo sin flechas pase 0 para "permittedArrowDirections":

[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

Para centrar nuevamente, pase el rect 1x1 ubicado en el centro de la vista:

CGRect rect = CGRectMake(viewWidth/2, viewHeight/2, 1, 1); 
[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

Entonces usted tiene un popover centrado y sin flecha.

El truco sobre la eliminación de la flecha podría romperse en cualquier momento. No proporcionaron una opción UIPopoverArrowDirectionNone por alguna razón, pueden optar por lanzar una excepción en el futuro cuando se pasa 0, o por defecto a algo. Úselo bajo su propio riesgo.

+0

Funciona para iOS 5.x –

+2

Para el iPad en modo Paisaje, tuve que cambiar el ancho y la altura de CGRectMake para centrar las cosas correctamente. – Alan

+1

Funciona en iOS 7.0.x también. –

0

Si está utilizando un UIPopoverController, tendrá una flecha. Aquí están tus elecciones.

UIPopoverArrowDirectionAny 
UIPopoverArrowDirectionUp 
UIPopoverArrowDirectionDown 
UIPopoverArrowDirectionLeft 
UIPopoverArrowDirectionRight 

Como se puede ver, no hay UIPopoverArrowDirectionNone

En cuanto al tamaño XI ter, en su Método viewDidLoad del archivo de implementación, se puede establecer lo siguiente.

self.contentSizeForViewInPopover = CGSizeMake(320.0, 360.0); 

Puede establecer el tamaño que desee para el popover.

+0

sí, pero si codifica un 0 es como UIPopoverArrowDirectionNone – user2387149

0

He estado trabajando éste hacia fuera, pero quería hacer tanto en el guión como sea posible, que cambia el enfoque un poco:

1) Seleccione el popover en el guión gráfico y eliminar la marca de dirección arriba/Abajo/Izquierda/Derecha para deshacerse de las flechas.

para centrarla en anulación pantalla prepararse para segue y hacer algo como esto:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    UIStoryboardPopoverSegue* popover = (UIStoryboardPopoverSegue*)segue; 
    CGFloat horizontalInset = (self.view.frame.size.width - popover.popoverController.popoverContentSize.width)/(CGFloat)2.0; 
    CGFloat verticalInset = (self.view.frame.size.height - popover.popoverController.popoverContentSize.height)/(CGFloat)2.0; 
    popover.popoverController.popoverLayoutMargins = 
     UIEdgeInsetsMake(
      verticalInset, 
      horizontalInset, 
      verticalInset, 
      horizontalInset); 
} 

En mi caso también me encontré con que radio de la esquina de la segue popover no coincidía con mi diseño así que cambio el color de fondo para borrar a resolver eso es decir, añadir esto a la cuadra arriba:

popover.popoverController.backgroundColor = [UIColor clearColor]; 

2) En el controlador de destino para el segue encontrar el atributo 'Popover' y marque 'uso tamaño Explicit' y poner el tamaño de usted quiere para que aparezca en modo popover.

Cuestiones relacionadas