Desidero presentare sempre un ViewController
in un popover su tutti i dispositivi e tutti gli orientamenti. Ho provato a realizzare questo adottando il UIPopoverPresentationControllerDelegate
e impostando il sourceView
e sourceRect
.UIModalPresentationPopover per iPhone 6 Plus in landscape non mostra popover
Questo funziona molto bene per tutti i dispositivi e gli orientamenti, ad eccezione dell'iPhone 6 Plus in orizzontale. In tal caso, il controller della vista scorre dalla parte inferiore dello schermo in una scheda. Come posso prevenirlo in modo che appaia sempre in un popover?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let popoverPresentationController = segue.destinationViewController.popoverPresentationController
popoverPresentationController?.delegate = self
popoverPresentationController?.sourceView = self.titleLabel!.superview
popoverPresentationController?.sourceRect = self.titleLabel!.frame }
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None }
Tutti i dispositivi sono sotto iOS 8.2 o superiore
Chiamata buona! Ho dimenticato che il metodo delegate è cambiato per 8.3. –
@PetahChristian Grazie! Sì, è stato un cambiamento abbastanza tranquillo e non sembra essere documentato se non nelle diff API. – Joshua
@Joshua SÌ! Ho implementato - (UIModalPresentationStyle) adaptivePresentationStyleForPresentationController: (UIPresentationController *) controller { return UIModalPresentationNone; } ma la nuova API risolve il mio problema, grazie signore! – Loegic