2010-03-18 2 views
0

Я попытался найти легкое решение для следующего. У меня есть главный вид, на котором есть плитка. Я хочу перетащить его поверх UITableView. Я мог запрограммировать выбор и перетащить уже с помощью UIGestureRecognizer.Другой вопрос о перетаскивании на iPhone

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

Я попытался добавить прикосновенияМодущие/Начальные/Завершенные события в viewCell. Они не получают пожаров, когда я перетаскиваю над ним плитки (другими словами, плитка скрывает часть viewCell под моим пальцем). Их увольняют, когда нет плитки, перетаскиваемой выше.

Есть ли эффективный метод hittest для этого?

Спасибо.

ответ

0

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

  • В общем, перетаскивание на iPhone - идея ПЛОХАЯ. Это очень сложно сделать, и получить обратную связь будет проблематично, потому что ваш палец будет препятствовать операции перетаскивания.
  • используя выбранную ячейку таблицы, чтобы указать «dropability», могут быть отклонены разработчиками магазина приложений; это означает, что «я выбрал эту ячейку», а не «Я что-то уронил»

Таким образом, вы, вероятно, захотите управлять всеми событиями касания в представлении «источник» и отправьте сообщения таблицы оттуда, вместо того, чтобы пытаться жонглировать сообщениями. Как только ваш -touchesBegan: withEvent: был вызван в одном представлении, все последующие -touchesMoved: withEvent: и -touchesEnded: withEvent: будут отправлены на это представление для жизненного цикла этого касания; перенаправляя их вокруг, будет запутывать всех участников.

+0

Спасибо Бен за ответ. Для первой части: мое приложение будет iPad-приложением. Для второй части: я не понимаю, что вы имеете в виду. Чтобы сделать мой вопрос простым: я хочу перетащить фотографию в строку таблицы. Я начинаю перетаскивание. Работает отлично. Однако прикосновения CellviewBegan/Moved/Ended не вызываются, когда я перетаскиваю их поверх них. Итак, как я узнаю, какая строка собирается получить каплю? – Teddy

+0

Вам нужно будет вычислить это, посмотрев на кадр каждой ячейки таблицы. Может быть, метод -cellForPoint: на вашем столе или viewController. –

+0

Спасибо, Бен, наконец, придумал решение. Я надеялся на более короткое решение. Еще раз спасибо. – Teddy

Смежные вопросы