Отличие ударов по UITableViewCell в целом от ударов по его дополнительной кнопке в частности
Я хотел бы реализовать UITableViewController
он работает аналогично представлению " Эпизоды" (в разделе " Мои подкасты") в приложении " Подкасты" для iOS 7 в том смысле, что его ячейки должны выполнить один переход, если я нажму на (левую часть) ячейки, и выполнить другой переход, если я нажму на вспомогательный вид камеры.
мой UITableViewController
реализует оба tableView:didSelectRowAtIndexPath:
а также tableView:accessoryButtonTappedForRowWithIndexPath:
от UITableViewDelegate
Однако вызывается только первый метод, независимо от того, нажимаю ли я на кнопку доступа к ячейке или где-то еще внутри ячейки.
Так как же провести необходимое различие? Я предполагаю, что было бы возможно разместить UITapGestureRecognizer
на камеру contentView
и использовать его обработчик событий вместо tableView:didSelectRowAtIndexPath:
Надеюсь, есть и более простая схема.
1 ответ
Тем временем я нашел то, что кажется правильным ответом здесь:
iOS сделает различие и назовет tableView:didSelectRowAtIndexPath:
или же tableView:accessoryButtonTappedForRowWithIndexPath:
если аксессуар (как установлено в IB) является кнопкой раскрытия подробностей (или кнопкой подробностей), но не является ли это индикатором раскрытия. Действительно, приложение Apple Podcasts использует кнопку детализации в описанном контексте.
Это соответствующая выдержка из (более старой версии) документации:
Обратите внимание, что кнопка подробного раскрытия, в отличие от индикатора раскрытия, может выполнять действие, отдельное от выбора строки.