The popoverControllerDidDismissPopover:
in the delegate is not called when 'dismissPopoverAnimated:' is used.
From the Apple Documentation for popoverControllerDidDismissPopover:
in UIPopoverControllerDelegate
:
The popover controller does not call this method in response to programmatic calls to the dismissPopoverAnimated: method. If you dismiss the popover programmatically, you should perform any cleanup actions immediately after calling the dismissPopoverAnimated: method.