Теперь есть официальный интерфейс для отображения меню ячеек UITableView в iOS 5. Пример (из делегата таблицы):
- (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:));
}
- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
{
if (action == @selector(copy:)){
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[[UIPasteboard generalPasteboard] setString:cell.textLabel.text];
}
}
Я попытался изменить общий контроллер UIMenuController, чтобы добавить свой собственный элемент меню, исмог добавить его и получить для него сообщение canPerformAction
, но возвращение YES не помогло;Я не смог отобразить свой пользовательский пункт меню.Из моих экспериментов похоже, что поддерживаются только Copy, Cut и Paste.[ РЕДАКТИРОВАТЬ С тех пор, как это было опубликовано, я научился добавлять пользовательские пункты меню.]
Обратите внимание, что это работает, только если реализованы все три метода делегата.