ios 7 - 自定义 UIMenuItem 在 TableViewCell 上不起作用
Posted
技术标签:
【中文标题】ios 7 - 自定义 UIMenuItem 在 TableViewCell 上不起作用【英文标题】:ios 7 - Custom UIMenuItem not working on TableViewCell 【发布时间】:2014-04-10 13:32:40 【问题描述】:我正在努力在 tableViewCell 上添加自定义 UIMenuItem
。我使用这个 *** post 来添加 customMenuItem。这在 ios 6 上运行良好。但在 ios 7 上根本无法运行。
下面是我的实现:
在viewDidLoad
:
UIMenuItem *sendByEmailMenuItem = [[UIMenuItem alloc] initWithTitle:@"Send By Email" action:@selector(sendByEmail:)];
[[UIMenuController sharedMenuController] setMenuItems: @[sendByEmailMenuItem]];
[[UIMenuController sharedMenuController] update];
然后添加它的委托
// Shared Menu item delegate actions
- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath
self.orderAtIndex = [self.orders objectAtIndex:indexPath.row];
[self becomeFirstResponder];
return YES;
- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
return (action == @selector(sendByEmail:));
- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
if (action == @selector(sendByEmail:))
[self sendByEmail:sender];
// 子类化表格视图单元格
-(BOOL) canPerformAction:(SEL)action withSender:(id)sender
return (action == @selector(sendByEmail:));
- (BOOL)canBecomeFirstResponder
return YES;
- (void) sendByEmail: (id) sender
// Some actions...
我做错了什么?任何帮助表示赞赏。谢谢
【问题讨论】:
大声笑我 3 天前用这个撞了我的头...... :) 但现在我开始工作了 出了什么问题。你能添加你的解决方案吗 是的,问题是没有调用该方法……becomeFirstResponder
方法成功了……答案中提供了代码……
帮你解决了...?
不,我在我的 TableViewController 实现中添加了它。但不工作
【参考方案1】:
在 viewWillAppear
或 viewDidLoad
中,我添加了这些
UIMenuItem *translateToMenu = [[UIMenuItem alloc] initWithTitle:@"Translate to.." action:@selector(translateTo:)];
UIMenuController *menuController = [UIMenuController sharedMenuController];
[menuController setMenuItems:[NSArray arrayWithObject:translateToMenu]];
[menuController setMenuVisible:YES animated:YES];
添加了这个方法
-(void) translateTo: (id) sender
只添加这两种方法
- (BOOL) canPerformAction:(SEL)selector withSender:(id) sender
if (selector == @selector(translateTo:))
return YES;
else
return NO;
- (BOOL) canBecomeFirstResponder
return YES;
试试这个,让我知道……
【讨论】:
谢谢,我用 tableViewController 将它添加到新项目中。但仍然无法正常工作。它真的对你有用吗? 是的,我有它在这里工作……它是显示还是不显示? 还有一件事你必须添加...[self becomeFirstResponder];
你添加了这个吗?
您没有为此添加任何表格视图委托操作。就像我上面的一样?我也尝试过保留和删除它们。但不能让它工作
哦.. 一件事你有自定义 tableViewCell 吗?以上是关于ios 7 - 自定义 UIMenuItem 在 TableViewCell 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UIMenuController sharedMenuController - uicollectionview 的自定义菜单项不在 ios 7 中显示
自定义 UIMenuItem 不适用于 PDFKit 的 PDFView
在显示之前将动态自定义 UIMenuItem 添加到复制和粘贴菜单
如何为 UITableViewCell 显示自定义 UIMenuItem?