0

我目前正在我的应用程序中使用 UIPanGestureRecognizer 对象移动 UIImageView。目前,这个 UIImageView 在我的屏幕上很好地上下移动。但是,我现在想做的是将 UIImageView 的移动边界限制在位于屏幕中间的 UITableView 所覆盖的区域内。我想将此移动限制在 UITableView 的上下边界。这是我控制 UIImageView 移动的相关方法:

- (void)panGestureDetected:(UIPanGestureRecognizer *)recognizer {

    _startLocation = [recognizer locationInView:_imageView];

    NSLog(@"The point is: %d", _startLocation);

    CGPoint newCenter  = _imageView.center;

    newCenter.y = [recognizer locationInView:[_imageView superview]].y;
//this is where I figure I need to include an if statement to perform a check to see if the location is within the desired region

    _imageView.center = newCenter;


}

我意识到我需要在我的方法中包含一个“if”语句来检查我的 UIImageView 是否在我想要的区域内,但问题是我不确定如何检查这个。有人可以帮我吗?

4

1 回答 1

0

您应该使用该translationInView方法(文档)。

这将返回CGPoint用户将图像移动到的位置。将图像视图的原始位置与平移进行比较。如果平移太大以至于图像视图会移动到所需区域之外,请不要移动它。

代码应该是这样的(我想你可以直接把它放进去):

CGPoint translation = [recognizer translationInView:_imageView.superview];
[recognizer setTranslation:CGPointMake(0, 0) inView:_imageView.superview];

CGPoint center = recognizer.view.center;
center.y += translation.y;
if (center.y < _table.frame.origin.y 
    || center.y > _table.frame.size.height) {
           return;
}
recognizer.view.center = center;

有关替代实现,请参阅此问题。

于 2013-06-20T19:27:27.060 回答