UITableView从不在其委托上调用tableView:shouldShowMenuForRowAtIndexPath :.

jco*_*man 2 objective-c uitableview uimenucontroller ios

我正在创建并显示一个实例UITableView.委托(实际上是我的子类UITableView)从不接收以下任何选择器:

  • tableView:shouldShowMenuForRowAtIndexPath:
  • tableView:canPerformAction:forRowAtIndexPath:withSender:
  • tableView:performAction:forRowAtIndexPath:withSender:

即使文档明确指出,例如,在讨论中tableView:shouldShowMenuForRowAtIndexPath:

如果用户在表视图中点击某一行,则首先调用此方法(如果已实现).如果不显示编辑菜单,则返回NO - 例如,与该行对应的单元格包含不应复制或粘贴的内容.

其他教程还记录了此快捷方式以显示UIMenuController表视图.为什么这不符合记录?

jco*_*man 7

虽然目前尚未记录(我正在提交文档更新,但谁知道何时/是否会发布),UITableViewDelegate方法:

  • 的tableView:shouldShowMenuForRowAtIndexPath:
  • 的tableView:canPerformAction:forRowAtIndexPath:withSender:
  • 的tableView:的performAction:forRowAtIndexPath:withSender:

只有在您的表视图实例由UITableViewController实例管理时才会调用.独立表视图不会调用这些方法.

如果表视图未连接到表视图控制器,则需要在每个表视图单元格上从长抽头侦听器(以复制标准系统功能)手动显示UIMenuController.

  • 事实并非如此,您只需要一个实现所有3种方法的UITableViewDelegate. (3认同)