1

我在 UIView 中有一些图像视图。这是我的代码:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint startPoint = [myTouch locationInView:self];
    imageview.center = CGPointMake(startPoint.x, startPoint.y);
}

有了这个,用户可以点击屏幕上的任何地方,图像视图将传送到触摸位置并从那里移动。我想限制它,使其仅在用户开始单击图像视图时才会响应。我怎样才能做到这一点?

4

1 回答 1

3

我会通过添加到图像视图中的手势识别器来做到这一点。如果您使用 a UIPanGestureRecognizer,它将在用户开始从图像视图内部拖动时触发,您可以使用该locationOfTouch:inView:方法确定拖动的图像视图的位置

更新更多细节:UIGestureRecognizer(包含一些子类的抽象类,或者您可以自己制作)是一个附加到 UIView 的对象,并且能够识别手势(例如 UIPanGestureRecogniser 知道用户何时平移,UISwipGestureRecognizer知道用户何时滑动)。

您创建一个手势识别器并将其添加到如下视图中:

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognizerMethod:)];
[self.imageView addGestureRecognizer:panGestureRecognizer];

然后在你的gestureRecognizerMethod实现中你可以检查手势的状态,并调整图像视图的位置

- (void)gestureRecognizerMethod:(UIPanGestureRecognizer *)recogniser
{
    if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged)
    {
        CGPoint touchLocation = [recognizer locationInView:self.view];
        self.imageView.center = touchLocation;
    }
}
于 2013-04-26T20:39:11.073 回答