Ho sviluppato un'app per iOS7 e ora sto provando ad aggiornarla per iOS8. Il problema è il seguente:IOS8 come spostare un popover attivo
L'orientamento dello schermo dell'app può essere ruotato e in alcuni casi alcuni pulsanti si spostano drasticamente. Ho alcuni popover che puntano a questi pulsanti, quindi se un popover è aperto quando lo schermo ruota, il pulsante si sposta, ho bisogno anche del popover.
In iOS7 Ho fatto questo seguenti: Quando schermo ruotata ho aggiornato i vincoli
- (void) updateViewConstraints
{
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{
self.Button.constant = (CGFloat)10;
}
else
{
self.Button.constant = (CGFloat)5;
}
[super updateViewConstraints];
}
Ho anche spostare il popover
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
if(TempDisplayPopoverController == examplePopoverController)
{
[examplePopoverController presentPopoverFromRect:[self ExamplePopoverPosition] inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
inizialmente carico la popover
- (void) LoadPopover{
examplePopover = [[examplep alloc] initWithNibName:@"exampleP" bundle:nil];
[examplePopover setDelegate:self];
examplePopoverController = [[UIPopoverController alloc] initWithContentViewController: examplePopover];
[examplePopoverController setDelegate:self];
examplePopoverController.popoverContentSize = examplePopover.view.frame.size;
TempDisplayPopoverController = examplePopoverController;
if ([examplePopoverController isPopoverVisible])
{
[examplePopoverController dismissPopoverAnimated:YES];
}
else
{
[examplePopoverController presentPopoverFromRect:[self ExamplePopoverPosition] inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
[self ExamplePopoverPosition]
restituisce semplicemente la posizione del pulsante.
Questo ha funzionato tutto bene, ero felice, iPad era felice e si sono comportati tutti.
Ora a causa di iOS8 devo cambiare alcuni bit.
self.interfaceOrientation
è ammortizzata
[examplePopoverController presentPopoverFromRect:[self ExamplePopoverPosition] inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
in didRotateFromInterfaceOrientation
genera un errore
"Application tried to represent an active popover presentation: <UIPopoverPresentationController: 0x7bf59280>"
Sono riuscito a rimediare self.interfaceOrientation
da
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self SetUpScreen:toInterfaceOrientation];
}
- (void) SetUpScreen:(UIInterfaceOrientation)toInterfaceOrientation{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
self.Button.constant = (CGFloat)10;
}
else
{
self.Button.constant = (CGFloat)5;
}
[super updateViewConstraints];
}
ma non hanno idea di come risolvere il problema del popover. Ho provato
popoverController: willRepositionPopoverToRect: inView:
ma proprio non riesco a sembrare farlo funzionare.
chiunque può consigli
Grazie
stesso problema qui. Dobbiamo chiedere ad Apple ... – giuseppe
Ciao, non ho ancora risolto questo <(concesso stato un po 'distratto con qualcos'altro però) –
Qualche aggiornamento su questo? Ho lo stesso problema –