[ios]当用户开始触摸 imageview 移动 UIImageView

标签: ios Objective-C
发布时间: 2017/3/21 22:41:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一些 imageviews 在 UIView。这是我的代码︰

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

与此用户可以在屏幕和 imageview 将传送到触摸位置上的任意位置单击并从那里移动。我想要限制它,它只会回应如果用户开始点击 imageview。 怎么可以这样?

解决方法 1:

我会做这与添加到图像视图的笔势识别器。如果您使用 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;
    }
}
官方微信
官方QQ群
31647020