iOS - 在UITableViewCell中显示菜单

时间:2013-03-11 11:09:10

标签: ios uitableview uimenucontroller

在我的应用程序中,我在点击表格视图单元格时显示菜单控制器。它显示一个菜单。以及所有操作都正在成功执行。好到现在。
我面临的一个小问题是,如果再次点击单元格(或其他一些单元格),我将无法隐藏菜单控制器。这是我使用的代码:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    UIMenuController* menuController = [UIMenuController sharedMenuController];

    if ([menuController isMenuVisible])
    {
        [menuController setMenuVisible:NO animated:YES];
    }
    else
    {
        [self becomeFirstResponder];        
        self.selectedIndex = indexPath.row;
        [menuController setTargetRect:[tableView rectForRowAtIndexPath:indexPath] inView:tableView];

        [menuController setMenuItems:@[
            [[UIMenuItem alloc] initWithTitle:@"Play" action:@selector(playVideo:)],
            [[UIMenuItem alloc] initWithTitle:@"Edit" action:@selector(editVideo:)],
            [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(deleteVideo:)],
            [[UIMenuItem alloc] initWithTitle:@"Share" action:@selector(shareVideo:)],
            [[UIMenuItem alloc] initWithTitle:@"Cancel" action:@selector(cancelMenu:)]
        ]];

        menuController.arrowDirection = UIMenuControllerArrowUp;
        [menuController setMenuVisible:YES animated:YES];
    }
}

我不知道为什么在再次敲击桌面视图单元时它没有隐藏。有人能引导我了解我所犯的错误吗?

1 个答案:

答案 0 :(得分:0)

根据我的经验,使用[menuController setMenuVisible:NO animated:NO];解雇菜单控制器有所帮助。我想如果你试图在同一个代码块中设置菜单的动画,你可能会遇到问题。