触摸拖动整个屏幕上的查看

时间:2016-01-24 08:14:18

标签: ios objective-c cocoa-touch

我有一个放置框架的UIImageView(0,0,320,200)。

我使用简单的手势为其添加了触摸拖动。

- (void)touchesMoved:(NSSet *)set withEvent:(UIEvent *)event {
    CGPoint p = [[set anyObject] locationInView:self.superview];
    self.center = p;
}

它工作正常,但是只要我将它拖到屏幕底部让我们说并移开我的手指然后尝试触摸它,它会停止检测视图上的触摸并开始检测屏幕上视图的触摸。现在这个imageView被放置在所有视图的顶部,所以我不确定它是否被拖动为什么它没有触及,

现在,如果以任何方式使用任何按钮使其移动到原始位置,它会再次开始检测触摸。

所以这里发生了什么?

1 个答案:

答案 0 :(得分:2)

例如,在gestureRecognizer方法中设置viewDidLoad

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(wasDragged:)];

[YourImageView addGestureRecognizer:panRecognizer];

移动ImageView后,gestureRecognizer对象将触发您创建的目标方法wasDragged:,您可以在此处更新视图的位置。

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

     UIImagewView *imageView = (UIImagewView *)recognizer.view;
     CGPoint translation = [recognizer translationInView:imageView];

     imageView.center = CGPointMake(imageView.center.x + translation.x, imageView.center.y + translation.y);
     [recognizer setTranslation:CGPointZero inView:imageView];
}

如您所说,将此拖动到屏幕底部之后,您应该可以从上次离开它的位置再次拖动它。

我希望这会有所帮助。