2013-01-23 41 views
1

我想在用戶選擇表中的任何一行時顯示UIMenuController。我正在使用UITableViewController來顯示具有自定義單元格的表格。帶UITableViewController的UIMenuController不起作用

我的代碼: -

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

    MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath]; 
    CGRect cellFrame = cell.frame; 

    [self.view becomeFirstResponder]; 

    UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Item1" action:@selector(action1:)]; 
    UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle:@"Item2" action:@selector(action2:)]; 
    UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:@"Item3" action:@selector(action3:)]; 

    UIMenuController * menuController = [UIMenuController sharedMenuController]; 
    menuController.menuItems = [NSArray arrayWithObjects:menuItem, menuItem1, menuItem2, nil]; 
    menuController.arrowDirection = UIMenuControllerArrowDown; 

    [menuController setTargetRect:cellFrame inView:self.view]; 

    [menuController setMenuVisible:YES animated:YES]; 
} 

- (BOOL)canBecomeFirstResponder 
{ 
    return YES; 
} 

UIMenuController不顯示。上述代碼有什麼錯誤?

另外,我提到了these links。但沒有運氣。

+0

嘿兄弟.....請參考此鏈接,如果你沒有.. !!! http://www.intridea.com/blog/2010/12/22/developers-notes-for-uimenucontroller# – NiravPatel

+0

看到這個,可能會有所幫助。 http://stackoverflow.com/questions/4582116/copy-paste-functionality-in-uitableviewcontroller –

回答

0

如果長時間按下後只顯示菜單,則無需使用tableView:didSelectRowAtIndexPath:並自行顯示菜單。

相反,你可以使用這個委託方法:

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

要隱藏標準項目(剪下),返回NO在這裏:

- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { 
    return NO; 
} 

然後,你需要return YEScanBecomeFirstResponder像你一樣,由於某種原因,我也必須實施這種方法:

- (BOOL)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { 
    return YES; 
} 
+0

確定何時UIMenuController被解僱? – jose920405

+0

此通知''[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willHideEditMenu :) name:UIMenuControllerWillHideMenuNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didHideEditMenu :) name:UIMenuControllerDidHideMenuNotification object:nil];'''不能使用這個委託 – jose920405