2015-07-08 11 views
5

Nel mio universale iOS 8 app, che vi presento un popover utilizzando utilizzando UIPopoverPresentationController come si vede qui sotto da prepareForSegue:Come impedire a UIPopoverPresentationController di essere eliminato quando si fa clic al di fuori del popover?

FavoriteNameViewController *nameVC = segue.destinationViewController; 
UIPopoverPresentationController *popPC = nameVC.popoverPresentationController; 
popPC.delegate = self; 

E con questo metodo delegato.

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller { 
return UIModalPresentationNone; 
} 

In questo caso particolare, sto presentando un controller di visualizzazione che sembra un avviso, ma non lo è.

enter image description here

Ora il mio problema è che l'utente può fare clic al di fuori di questo popover e diventa respinto. Non c'è alcun problema reale, tranne che non è come funzionano gli avvisi e vorrei emulare un avviso.

Vedo che UIPopoverControllerDelegate aveva un metodo chiamato popoverControllerShouldDismissPopover:, ma UIPopoverPresentationControllerDelegate non ha quel metodo, e credo di aver bisogno di usare quest'ultimo.

+0

Potremmo parlare ora (cosa hai rifiutato di fare nella tua precedente domanda) sul motivo per cui non stai usando una vista presentata per questo? Perché non fai solo ciò che faccio qui: crea una vista che assomiglia e si comporta come una vista di avviso? https://github.com/mattneub/custom-alert-view-iOS7 - Questo risolverebbe anche il problema del popover che non è un popover in landscape su iPhone 6 plus. – matt

+0

Il motivo per cui ho seguito la rotta che ho fatto è perché quando ho cercato come presentare un popover era il metodo che ho trovato. Verificherò il tuo progetto per una migliore comprensione di ciò di cui stai parlando. Molto apprezzato. –

risposta

13

È necessario impostare del passthroughViews-nil regolatore popover e del controller della vista modalInPopover su YES.

-1

provare il seguente nella vista

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ 
    return YES; 
}