UITableView никогда не вызывает tableView: shouldShowMenuForRowAtIndexPath: на своем делетете

Я создаю и показываю экземпляр UITableView . Делегат (который на самом деле является моим подклассом UITableView ) никогда не получает ни одного из следующих селекторов:

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

даже несмотря на то, что в документации конкретно указано, например, при обсуждении tableView:shouldShowMenuForRowAtIndexPath:

Если пользователь нажимает на определенную строку в представлении таблицы, сначала запускается этот метод (если он реализован). Верните НЕТ, если меню редактирования не должно отображаться – например, ячейка, соответствующая строке, содержит контент, который не следует копировать или вставлять.

Другие учебники также документируют этот ярлык для отображения UIMenuController в представлениях таблиц. Почему эта работа не документирована?

Хотя он в настоящее время не документирован (я отправляю обновление документации, но кто знает, когда / если он будет опубликован), методы UITableViewDelegate:

  • Tableview: shouldShowMenuForRowAtIndexPath:
  • Tableview: canPerformAction: forRowAtIndexPath: withSender:
  • Tableview: performAction: forRowAtIndexPath: withSender:

вызывается только в том случае, если ваш экземпляр представления таблицы управляется экземпляром UITableViewController. В автономном представлении таблицы эти методы не будут задействованы.

Если представление таблицы не подключено к контроллеру табличного представления, вам нужно будет отображать UIMenuController вручную из прослушивателей длинных нажатий (чтобы дублировать стандартную функциональность системы) в каждой ячейке представления таблицы.