2015-07-08 5 views
5

In meinem universellen iOS 8-App, präsentiere ich eine popover von prepareForSegue mit UIPopoverPresentationController wie unter Verwendung gesehen:Wie kann verhindert werden, dass UIPopoverPresentationController beim Klicken auf ein externes Popover beendet wird?

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

Und mit dieser Delegatmethode.

In diesem speziellen Fall, ich präsentiere einen View-Controller, der aussieht wie eine Warnung, ist aber nicht.

enter image description here

Nun mein Problem ist, dass der Benutzer außerhalb dieses popover klicken kann, und es wird abgewiesen. Es gibt kein echtes Problem, außer dass Alarme nicht funktionieren und ich möchte, dass dies eine Warnung emuliert.

Ich sehe, dass UIPopoverControllerDelegate hatte eine Methode namens popoverControllerShouldDismissPopover:, aber UIPopoverPresentationControllerDelegate hat nicht diese Methode, und ich glaube, ich muss die letztere verwenden.

+0

Können wir jetzt darüber sprechen (was Sie in Ihrer früheren Frage nicht getan haben), warum Sie keine vorgestellte Ansicht dafür verwenden? Warum tust du nicht einfach das, was ich hier mache: eine vorgestellte Ansicht erstellen, die wie eine Alarmansicht aussieht und sich verhält? https://github.com/matnteub/custom-alert-view-iOS7 - Dies würde auch das Problem des Popover lösen, das kein Popover in der Landschaft auf dem iPhone 6 plus ist. – matt

+0

Der Grund, warum ich den Weg gegangen bin, ist, weil, als ich nach einem Popover suchte, die Methode war, die ich fand. Ich werde Ihr Projekt prüfen, um besser zu verstehen, wovon Sie sprechen. Sehr geschätzt. –

Antwort

13

Sie benötigen den popover Controller passthroughViews-nil und die View-Controller des modalInPopover auf YES zu setzen.

-1

Versuchen Sie Folgendes in Ihrer Ansicht

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