Выбор строки при перетаскивании по UITableView с отключенной прокруткой - PullRequest
4 голосов
/ 25 июня 2010

Если создать стандартное сгруппированное табличное представление, состоящее из двух строк, а затем коснуться первого ряда, ячейка будет выделена. Если затем перетащить палец вниз, выбор строки отменяется, и табличное представление начинает перемещаться при перетаскивании.

Представьте себе ту же ситуацию, но с прокруткой табличного представления, отключенной с помощью tableView.scrollEnabled = NO. Теперь, когда кто-то выбрал строку и начинает ее перетаскивать, она отменяется, и таблица остается статичной.

У меня есть два вопроса:

  1. Как я могу убедиться, что строка не отменена, если выбрать и перетащить в пределах строки?
  2. Когда вы перетаскиваете из первого ряда во второй ряд, как я могу гарантировать, что первый ряд отменяется, а второй становится выбранным?

Для примера этой функциональности в действии откройте приложение Часы и выберите элемент панели вкладок Будильник. Нажмите верхнюю правую кнопку «плюс», и появится модальное представление с четырьмя рядами. Нажмите вниз на первый ряд, перетащите на второй, и вы увидите, что выделение перемещается по строкам, а сама таблица остается статичной. Как это достигается?

1 Ответ

0 голосов
/ 08 июля 2013

В табличном представлении с scrollEnabled = NO, когда вы касаетесь любой ячейки, вы получаете didHighlightRowAtIndexPath, а когда вы начинаете перетаскивать, вы получаете didUnhighlightRowAtIndexPath (даже если вы остаетесь внутри ячейки).При перетаскивании ячейка не выделяется и не снимается, и никакие другие ячейки не выделяются / не выделяются при этом касании.

Существует метод shouldHighlighRowAtIndexPath, который можно решить, должен ли касание выделять строку или нет., но не метод shouldUnhighlight.

Если вас беспокоит «вспышка» подсветки / подсветки, вы можете использовать метод shouldHighlight, чтобы просто вернуть NO.Или вы можете вернуть NO, если выбрана ячейка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...