2012-11-26 68 views
1

我已經實現了一個UIMenuItem,通過長按TabViewController上的一個項目來顯示它是UITabBarController的一個元素。 我在下面做了如下的操作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,如果長按按鈕,菜單將不會出現。爲什麼?

+0

如果從viewDidLoad中移動你的代碼viewDidAppear會發生什麼?我猜測當切換標籤頁時,某些東西會被取消,而且由於viewcontroller已加載,所以您的UIMenuController不希望顯示。 –

+0

仍然沒有工作.. – mrkhv

+0

我還在等待其他答案.. – mrkhv

回答

1

我有同樣的問題。找到解決方案this answer:您必須在UITableViewController的viewDidAppear中調用becomeFirstResponder。

0

你應該實現以下UITabBarControllerDelegate方法:

斯威夫特:

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 
    viewController.becomeFirstResponder() 
} 

的Objective-C:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    [viewController becomeFirstResponder]; 
} 
相關問題