UITableView上的UIMenuController尽pipe有所有的方法都不会显示出来

我有UITableView来显示一些列表。 实现了UILongPressGestureRecognizer来获得调用,并在此我想显示删除,上传等操作的菜单。

以下是实施

 // Registering for long press event UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; lpgr.delegate = self; [self.myTable addGestureRecognizer:lpgr]; 

长按我的控制function

 - (IBAction)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { CGPoint p = [gestureRecognizer locationInView:self.playbackTable]; NSIndexPath *indexPath = [self.playbackTable indexPathForRowAtPoint:p]; if (indexPath == nil) { NSLog(@"long press on table view but not on a row"); } else { NSLog(@"long press on table view at section %d row %d", indexPath.section, indexPath.row); CGPoint p = [gestureRecognizer locationInView: self.myTable]; NSIndexPath *indexPath = [self.myTable indexPathForRowAtPoint:p]; if (indexPath != nil) { if([self becomeFirstResponder]) { UIMenuItem *delete = [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(deleteFileListItem:)]; menu = [UIMenuController sharedMenuController]; [menu setMenuItems:[NSArray arrayWithObjects:delete, nil]]; [menu setTargetRect:[self.myTable rectForRowAtIndexPath:indexPath] inView:self.myTable]; [menu setMenuVisible:YES animated:YES]; } } } } } 

我也实施了以下方法

 -(BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(deleteFileListItem:)) { return YES; } return NO; } -(BOOL)canBecomeFirstResponder { return YES; } 

 - (void)deleteFileListItem:(id)sender { // Will perform action here } 

请让我知道是否有遗漏或我做错了。

将长按手势识别器附加到每个单元格,而不是整个表格视图时,我都成功了。 我的猜测是这是这个问题。