Cómo agregar una vista en la parte superior de un UIPopoverController
-
26-09-2019 - |
Pregunta
Tengo una aplicación para iPad con una mesa de “cajón” que se muestra en un popover. El usuario puede tocar y mantener en un elemento en el cajón de arrastre que fuera elemento de la misma y en mi vista principal. Esa parte funciona bien; Por desgracia, la vista siendo arrastrada aparece bajo el popover, y es demasiado pequeño para ser visible hasta que se arrastró hacia fuera de debajo de ella. Si añado la vista como una vista secundaria del controlador de vista en el popover, que se recorta por el marco de la popover, y ya que no puedo acceder a la vista de la UIPopoverController
, no puedo desactivar masksToBounds
de su capa -y que probablemente no sería una gran idea de todos modos. Sospecho que podría utilizar un UIWindow
adicional con un alto valor de windowLevel
para forzar la vista arrastrado a aparecer en la parte superior de la popover, pero esto parece un exceso. ¿Hay una solución mejor?
Solución
Lo tengo. UIWindow
funciona bien. Código:
// when drag starts
draggingView = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,100,100)];
draggingView.windowLevel = UIWindowLevelAlert;
draggingView.center = [gestureRecognizer locationInView:self.view.window];
[draggingView makeKeyAndVisible];
// when drag ends
[draggingView release];
draggingView = nil;
Otros consejos
Adición de la Swift Version:
let windows: [UIWindow] = UIApplication.shared.windows
let firstWindow: UIWindow = windows[0]
firstWindow.addSubview(loadingView)
firstWindow.bringSubview(toFront: loadingView)
EDITAR a admin: gracias por la revisión - eliminado mi otra respuesta por duplicado ¿Cómo mostrar un UIView más de un UIPopoverController