I am using the BarButtonItem on top of Navigation Bar. And I have assigned a doneMethod for the BarButtonItem. It is not getting detected when I press the button, but If I try to do some swipe on top of the BarButtonItem , it is calling doneMethod. It is really strange for me. Can anyone tell me why ?

This is the screenshot of my sample app. And in the .h File I have written method as
- (IBAction) doneButtonPressed:(id)sender;
and respective implementation in .m
- (IBAction) doneButtonPressed:(id)sender{
NSLog(@"Done Button Pressed");
}
It looks like you’re hooking this up in Interface Builder, so make sure you have used the “Touch Up Inside” event. Sounds like you may have inadvertently used “Touch Drag Inside”.