0

私のアプリケーションでは、テーブル ビュー セルをタップするときにメニュー コントローラーを表示する必要があります。そのメニューを示しています。同様に、すべてのアクションが正常に実行されています。今までよかった。
私が直面している小さな問題の 1 つは、セル (または他のセル) をもう一度タップすると、メニュー コントローラーを非表示にできないことです。私が使用しているコードは次のとおりです。

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

テーブルビューのセルを再度タップしても非表示にならない理由がわかりません。私がやっている間違いは何ですか?

4

1 に答える 1

0

私の経験では、でメニューコントローラーを閉じること[menuController setMenuVisible:NO animated:NO];が役に立ちました。同じコードブロックでメニューをアニメーション化しようとすると、問題が発生する可能性があると思います。

于 2013-03-11T12:00:36.263 に答える