De acuerdo con la documentación sobre UIPopoverController, cuando se presenta el popover, se presenta en una "ventana" especial. Debido a esto, simplemente agregar una subvista al controlador de vista de contenido del controlador de vista popover no es suficiente para poder arrastrar una vista fuera de la vista del controlador de vista Popover.
La solución más fácil aquí es crear su propia ventana, agregue su vista que se puede arrastrar a la ventana cuando se produce el arrastre. Haga que la ventana sea visible durante todo el proceso de arrastrar/soltar, y luego suelte su ventana cuando se complete.
Como se mencionó anteriormente, los reconocedores de gestos (GR) son los más adecuados para la funcionalidad de arrastrar/soltar.Una vez que el estado de GR ha cambiado a "Comenzó", el GR controlará todos los toques hasta que se logre el estado "Terminado" o "Cancelado" lo que lo hace ideal para arrastrar vistas entre controladores de vista y ventanas :)
Ejemplo:
@interface MySplitViewController : UISplitViewController {
UIView *dragView;
UIWindow *dragWindow;
}
Implementación: NOTA no necesitamos llamar "makeKeyAndVisible" en nuestra ventana. Solo tenemos que establecer su propiedad "Oculto"
De Apple en lo que respecta al método makeKeyAndVisible: // conveniencia. la mayoría de las aplicaciones lo llaman para mostrar la ventana principal y también hacerla clave. de lo contrario utilizar la vista de la propiedad oculta
-(void)dragBegan{
self.dragWindow = [[UIWindow alloc] initWithFrame:self.view.window.frame];
[self.dragWindow addSubview:self.dragView];
[self.dragWindow setHidden:NO];
}
Aquí manejamos el gesto o el estado del reconocedor de "terminación" "Cancelado". NOTA: Es importante eliminar la ventana cuando se complete el Arrastrar/Soltar o perderá la interactividad del usuario con las vistas a continuación.
-(void)dragEnded{
[self.dragView removeFromSuperview];
[self.dragWindow setHidden:YES];
[self.dragWindow release];
[self.view addSubview:self.dragView];
}
dude estoy confundido .. ¿qué son UIPopoverController y UIGestureRecognizers? No es seguro que los componentes UIKit. ¿Te refieres a algunas vistas personalizadas ... o algún tipo de funcionalidad que desees ...? – lukya
@lukya UIPopovercontroller y UIGestureRecognizers son todos parte de UIKit para Ipad (Uigesturerecognizer es también para iphone) – Daniel
@Daniel ¿Alguna idea sobre cómo se estructurarán los objetos? – umerh