iOS - 在 UITableViewCell 中显示菜单

Posted

技术标签:

【中文标题】iOS - 在 UITableViewCell 中显示菜单【英文标题】:iOS - Showing Menu in UITableViewCell 【发布时间】:2013-03-11 11:09:10 【问题描述】:

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

    - (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];
    

我不知道为什么再次点击表格视图单元格时它没有隐藏。有人可以指导我做错了什么吗?

【问题讨论】:

你试过[self resignFirstResponder];而不是setMenuVisible:NO... 我注意到的问题是“if ([menuController isMenuVisible])”这行代码总是返回NO。 【参考方案1】:

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

【讨论】:

我正在检查条件是可见还是不可见......所以你仍然认为这会是一个问题吗?首先,它总是告诉我菜单不可见。我做错了什么。 如果去掉 if 子句而只使用 [menuController setMenuVisible:NO animated:NO]; 会发生什么? ? 简单,它会一直显示菜单。我的要求是在第一次点击时,它会显示菜单,在第二次点击时它必须隐藏。

以上是关于iOS - 在 UITableViewCell 中显示菜单的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 14 中更改 UITableViewCell 背景颜色

在 iOS7 中更新 UITableViewCell 高度

如何在 iOS 的 UITableViewCell 中播放视频(自动播放)

iOS - subivew 不能在 UITableViewCell 中居中

iOS - 如何在不同的 UITableViewCell 中重用 UIView

在 UITableviewCell (ios7) 中嵌入的 UITableView 中滚动