Моя первая атака на эту проблему будет выглядеть следующим образом:
(1) подкласс UIImageView для хранения каждого фрагмента головоломки.
(2) Настройте свой подкласс UIImageView, инициализировав егоUIPanGestureRecognizer.Что-то вроде:
self.panRecognizer =
[[UIPanGestureRecognizer alloc]
initWithTarget: self
action: @selector(handlePan:)];
[self addGestureRecognizer:
self.panRecognizer];
(3) В методе действия, связанном с распознавателем жестов панорамирования, обновите местоположение объекта на основе сообщений от распознавателя жестов панорамирования фрагмента головоломки.Должно работать что-то вроде следующего:
-(void) handlePan:
(UIGestureRecognizer *)sender
{
UIPanGestureRecognizer *panRecognizer =
(UIPanGestureRecognizer *)sender;
if (panRecognizer.state ==
UIGestureRecognizerStateBegan ||
panRecognizer.state ==
UIGestureRecognizerStateChanged)
{
CGPoint currentPoint =
self.center;
CGPoint translation =
[panRecognizer translationInView:
self.superView];
self.center = CGPointMake
(currentPoint.x + translation.x,
currentPoint.y + translation.y);
[panRecognizer setTranslation: CGPointZero
inView: self.superView];
}
}