Я успешно выполнил это и хотел бы поделиться решением.
Поскольку мы имеем дело с UITableView внутри UIPopoverController, первая проблема, с которой вам приходится сталкиваться, это то, что пользователь может просто захотетьчтобы прокрутить представление таблицы, не перетаскивайте содержимое одной из ее ячеек (в данном случае UIImageView).Я решил эту проблему, подключив пользовательский распознаватель жестов к своему классу пользовательского представления изображений, что означает, что к каждому представлению изображения, загруженному в табличное представление, был прикреплен пользовательский распознаватель жестов.
Суть этого распознавателя жестов заключалась в следующемкод внутри метода touchesMoved:
if (ABS(currentTouchLocation.y-self.firstTouchLocation.y) > 4 && ABS(currentTouchLocation.x-self.firstTouchLocation.x)< 2)
{
self.state = UIGestureRecognizerStateFailed;
}
Причинение сбоя распознавателя жестов позволяет событию касания перейти к представлению таблицы, как обычно.Использование условий> 4 и <2 управляет углом, под которым действие считается вертикальной прокруткой, а не перетаскиванием. </p>
Остальная часть кода выполняется в методе действия жеста.Здесь, в первую очередь, вы создаете копию представления изображения ячейки табличного представления и добавляете ее в главное окно:
self.newImageView = [[ElementImageView alloc] initWithImage:self.image];
self.newImageView.frame = [self.superview convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
[[UIApplication sharedApplication].keyWindow addSubview:self.newImageView];
Именно в этот момент я боролся больше всего.Я продолжал пытаться найти способ перенести прикосновение к этому новому виду изображения или каким-либо образом вызвать прикосновение программно, чтобы моё перетаскивающее движение могло продолжаться без проблем.Это было совершенно ненужно.Перетаскивание осуществляется путем применения к вашему виду дельты x / y между первой позицией соответствующего касания и последней позицией.Вместо этого я просто оставил свой исходный вид изображения там, где он был, и применил дельту к моей копии.
Если вы придерживаетесь этого подхода, вы можете легко перетащить копию UIImageView из UITableView / UIPopOverController в любое место на экране.,