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 }
请让我知道是否有遗漏或我做错了。
将长按手势识别器附加到每个单元格,而不是整个表格视图时,我都成功了。 我的猜测是这是这个问题。