У меня есть несколько подклассов UIView, которые существуют в виде инвентаря.Когда вы нажимаете одну, поверх нее появляется другая перетаскиваемая версия.Я хочу, чтобы версии инвентаря оставались на месте, пока вы тащите других.Код для создания дубликата работает, но перетаскивание пальца не перемещает его.
Если я отпускаю, а затем начинаю перетаскивать только что созданную версию, она перемещается, как и ожидалось.Я думаю, это потому, что у оригинальных штрихов (которые сделали обман) не было перетаскиваемой версии в цепочке респондента.
Небольшой код ...
в моей стационарной "иконке"...
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
[self.viewController placeDraggableItem:self.item WithPoint:self.frame.origin];
}
в моем viewController ...
- (void)placeDraggableItem:(Item *)item WithPoint:(CGPoint)point
{
DraggableItem *draggableItem = [[DraggableItem alloc] initWithImage:[UIImage imageNamed:item.graphic]];
draggableItem.frame = CGRectMake(point.x, scrollView.frame.origin.y + point.y, 64.0f, 64.0f);
[self.view addSubview:draggableItem];
[draggableItem release];
}
в моем DraggableItem ...
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
currentPoint = [[touches anyObject] locationInView:self];
}
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint activePoint = [[touches anyObject] locationInView:self];
CGPoint newPoint = CGPointMake(self.center.x + (activePoint.x - currentPoint.x), self.center.y + (activePoint.y - currentPoint.y));
float midPointX = CGRectGetMidX(self.bounds);
if (newPoint.x > self.superview.bounds.size.width - midPointX)
newPoint.x = self.superview.bounds.size.width - midPointX;
else if (newPoint.x < midPointX) // If too far left...
newPoint.x = midPointX;
float midPointY = CGRectGetMidY(self.bounds);
if (newPoint.y > self.superview.bounds.size.height - midPointY)
newPoint.y = self.superview.bounds.size.height - midPointY;
else if (newPoint.y < midPointY) // If too far up...
newPoint.y = midPointY;
self.center = newPoint;
}
Теперь снова создаётся перетаскиваемая версия.И перетаскиваемая версия может быть перемещена после того, как вы впервые выпустите свое первое прикосновение.Но я думаю, что мне нужно, чтобы вновь созданный UIView отвечал на прикосновения, которые изначально были сделаны для «иконы».
Есть идеи?
Я знаю, что этот вопрос отчасти похожна этот: Как "перевести" первого респондента из одного UIView в другой? , но в этом случае представление, которое должно принимать касания, уже существует, тогда как мне нужно передать касания во вновь созданный вид.