UITableViewCell を長押ししてカスタム UIMenuItems を表示するとポップアップする UIMenuController が必要です。
カスタムアイテムをviewDidLoadに設定しました
UIMenuItem *testMenuItem = [[UIMenuItem alloc] initWithTitle:@"Test" action:@selector(test:)];
[[UIMenuController sharedMenuController] setMenuItems: @[testMenuItem]];
そして、適切なデリゲート メソッドをすべて設定しました。
- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
return (action == @selector(copy:) || action == @selector(test:));
}
- (BOOL)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
if (action == @selector(copy:)) {
// do stuff
}
return YES;
}
ただし、「コピー」アイテムとカスタムアイテムのみを許可するため、「コピー」アイテムを表示するだけです。ただし、カスタム アイテムは表示されません。
ジェスチャ認識機能をセル自体に追加することもできますが、それは UIMenuController の共有インスタンスの目的を無効にしますね。