diff --git a/Classes/Popover/WEPopoverController.h b/Classes/Popover/WEPopoverController.h index 6261a87..fab2f7e 100755 --- a/Classes/Popover/WEPopoverController.h +++ b/Classes/Popover/WEPopoverController.h @@ -15,6 +15,8 @@ @protocol WEPopoverControllerDelegate +@optional + - (void)popoverControllerDidDismissPopover:(WEPopoverController *)popoverController; - (BOOL)popoverControllerShouldDismissPopover:(WEPopoverController *)popoverController; diff --git a/Classes/Popover/WEPopoverController.m b/Classes/Popover/WEPopoverController.m index dabcc1a..8c13960 100755 --- a/Classes/Popover/WEPopoverController.m +++ b/Classes/Popover/WEPopoverController.m @@ -106,7 +106,10 @@ - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished c if (userInitiatedDismissal) { //Only send message to delegate in case the user initiated this event, which is if he touched outside the view - [delegate popoverControllerDidDismissPopover:self]; + if(delegate != nil && [delegate conformsToProtocol:@protocol(WEPopoverControllerDelegate)] && + [delegate respondsToSelector:@selector(popoverControllerDidDismissPopover:)]) { + [delegate popoverControllerDidDismissPopover:self]; + } } } } @@ -246,9 +249,13 @@ - (void)repositionPopoverFromRect:(CGRect)rect - (void)viewWasTouched:(WETouchableView *)view { if (popoverVisible) { - if (!delegate || [delegate popoverControllerShouldDismissPopover:self]) { - [self dismissPopoverAnimated:YES userInitiated:YES]; + BOOL shouldDismiss = YES; + if(delegate != nil && [delegate conformsToProtocol:@protocol(WEPopoverControllerDelegate)] && + [delegate respondsToSelector:@selector(popoverControllerShouldDismissPopover:)]) { + shouldDismiss = [delegate popoverControllerShouldDismissPopover:self]; } + if(shouldDismiss) + [self dismissPopoverAnimated:YES userInitiated:YES]; } }