1

UITabBarControllerの要素であるTableViewControllerの項目を長押しして表示するUIMenuItemが実装されました。私は以下のようにそれをしました

- (void)viewDidLoad
{
    resendMenuItem = [[UIMenuItem alloc] initWithTitle:@"Kirim Ulang" action:@selector(resend:)];
    [[UIMenuController sharedMenuController] setMenuItems: @[resendMenuItem]];
    [[UIMenuController sharedMenuController] update];

} 

- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
    selectedIndex = indexPath.row;
    return (action == @selector(resend:));
}

- (BOOL)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
    selectedIndex = indexPath.row;
    return YES;
}


-(BOOL) canPerformAction:(SEL)action withSender:(id)sender {
    return (action == @selector(resend:));
}

-(BOOL)canBecomeFirstResponder {
    return YES;
}

/// this methods will be called for the cell menu items
-(void) resend: (id) sender
{
 // do something
}

最初はメニューがうまく表示されます。ただし、UITabBarControllerで他のタブに切り替えてから、UITableViewControllerに再度切り替えた後、長押しするとメニューが表示されなくなります。なんで?

4

2 に答える 2

1

私も同じ問題を抱えていました。この回答で解決策が見つかりました:UITableViewControllerのviewDidAppearでbecomeFirstResponderを呼び出す必要があります。

于 2013-01-29T10:00:53.537 に答える