if ([touch view]==dropTarget1)
{
CGPoint current = [touch locationInView:self.view];
if (homeY > 540 && homeY < dropTarget1.frame.origin.y+dropTarget1.frame.size.height)
{
dif = current.y - beginY;
CGRect newDragObjectFrame = CGRectMake(self.dropTarget1.frame.origin.x, homeY+dif,
self.dropTarget1.frame.size.width,dropTarget1.frame.size.height);
self.dropTarget1.frame = newDragObjectFrame;
homeY = homeY+dif;
}
}当我使用这段代码时,它是向上移动的,但我不能再上下移动它了。
发布于 2014-01-20 16:26:57
您所遇到的问题可能是由于if语句中的情况所致。一旦homeY大于540或小于dropTarget1.frame.origin.y+dropTarget1.frame.size.height,条件将不再为真(除非在代码的其他地方更改homeY ),并且将忽略触摸。我认为获得您想要的交互的最好方法是使用UIPanGestureRecognizer。下面是一个如何做到这一点的例子:
// Add this to where you initialize dropTarget1
UIPanGestureRecognizer * panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
panGesture.delegate = self;
[dropTarget1 addGestureRecognizer:panGesture];
- (void)handlePan:(UIPanGestureRecognizer *)recognizer
{
CGPoint translation = [recognizer translationInView:self.dropTarget1];
if (recognizer.view.center.y + translation.y > 80 && recognizer.view.center.y + translation.y < 350)
{
recognizer.view.center = CGPointMake(recognizer.view.center.x,recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.dropTarget1];
}
}只需将80和350更改为实际需要的值。此外,您还需要将UIGestureRecognizerDelegate添加到类中。
祝好运!
https://stackoverflow.com/questions/21203203
复制相似问题