ios – 视图的简单拖放?

前端之家收集整理的这篇文章主要介绍了ios – 视图的简单拖放?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习iOS,但我找不到如何向UIView添加拖放行为.

我试过了:

[_view addTarget:self action:@selector(moved:withEvent:) forControlEvents:UIControlEventTouchDragInside];

它说“UIView没有可见的接口声明选择器addTarget(etc)”

此外,我尝试添加平移手势识别器,但不确定这是否是我需要的

- (IBAction)test:(id)sender {
       NSLog(@"dfsdfsf");
  }

它被称为,但不知道如何获得事件的坐标.在iOS中注册移动事件回调/拖放操作的标准简单方法是什么?

提前致谢.

解决方法

绝对是UIPanGestureRecognizer的方法.如果您希望用户拖动视图,则需要在superview的坐标系中进行手势的“翻译”(移动):
- (IBAction)panWasRecognized:(UIPanGestureRecognizer *)recognizer {
    CGPoint translation = [recognizer translationInView:_view.superview];

完成翻译后,您可以通过更改其中心来移动(“拖动”)视图:

CGPoint center = _view.center;
    center.x += translation.x;
    center.y += translation.y;
    _view.center = center;

最后,您想要将平移手势识别器的转换设置为零,因此下次收到消息时,它只会告诉您自上一条消息以来手势移动了多少:

[recognizer setTranslation:CGPointZero inView:_view.superview];
}

这里可以轻松复制/粘贴:

- (IBAction)panWasRecognized:(UIPanGestureRecognizer *)recognizer {
    CGPoint translation = [recognizer translationInView:_view.superview];

    CGPoint center = _view.center;
    center.x += translation.x;
    center.y += translation.y;
    _view.center = center;

    [recognizer setTranslation:CGPointZero inView:_view.superview];
}

猜你在找的iOS相关文章