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に再度切り替えた後、長押しするとメニューが表示されなくなります。なんで?