ios 6 - 在UITableViewController上没有调用canperformaction

时间:2014-02-18 11:54:26

标签: ios objective-c uitableview

我正在努力添加自定义共享菜单。我按照这个stackoverflow post来实现这个也见过其他帖子。

它正在发挥作用。但是当我通过UITabBar项目操作进入这个UITableView控制器时,我遇到了调用canPerformAction的问题,该操作将我导回到该视图。

我试图通过在stackoverflow上使用answer之一来解决这个问题。但是在这种情况下仍然没有调用canPerformAction

在这种情况下的任何帮助都是适用的。感谢

编辑:我的代码如下:

在viewDidLoad上,我正在关注

UIMenuItem *sendByEmailMenuItem = [[UIMenuItem alloc] initWithTitle:@"Send e-mail" action:@selector(sendEmail:)];
[[UIMenuController sharedMenuController] setMenuItems: @[sendEmailMenuItem]];
[[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 {
    return NO;
}
- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {

}

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

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (void) sendEmail: (id) sender {
       //do stuff
}

1 个答案:

答案 0 :(得分:0)

解决了这个问题。如果有人需要,可以发布。

我在shouldShowMenuForRowAtIndexPath行动

上添加了一个致电拳头的电话
- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
    [self becomeFirstResponder];
    return YES;
}

这解决了我的问题。感谢