Suppose your UIBarButtonItem is connected to:
-(void)buttonClicked:(UIBarButtonItem*)sender event:(UIEvent*)event;
Then paste these codes into the controller of the form:
-(void)buttonClicked:(UIBarButtonItem*)sender event:(UIEvent*)event{ [self becomeFirstResponder]; UIView *buttonView=[[event.allTouches anyObject] view]; CGRect buttonFrame=[buttonView convertRect:buttonView.frame toView:self.view]; UIMenuController *menuController = [UIMenuController sharedMenuController]; UIMenuItem *resetMenuItem = [[UIMenuItem alloc] initWithTitle:@"Menu Item" action:@selector(menuItemClicked:)]; NSAssert([self becomeFirstResponder], @"Sorry, UIMenuController will not work with %@ since it cannot become first responder", self); [menuController setMenuItems:[NSArray arrayWithObject:resetMenuItem]]; [menuController setTargetRect:buttonFrame inView:self.view]; [menuController setMenuVisible:YES animated:YES]; [resetMenuItem release]; } - (void) copy:(id) sender {
The key should return YES for canBecomeFirstResponder and canPerformAction.
Here is an example project if you need it.
These codes actually come from other posts on stackoverflow, I just combined them.
Draw UIBarButtonItem frame in window?
How to make UIMenuController work for custom view?
source share