I do not know a better solution than manually accessing it every time you reject it programmatically.
[self popoverPresentationControllerDidDismissPopover:self.popoverPresentation]
This is quite common in the iOS SDK. For example, if you programmatically select a row in a table view, the delegate method tableView:didSelectRowAtIndexPath: will not be called.
source share