当我向右滑动时,我有一个想要向右移动的图像。 这是代码的主要部分!

-(void)viewDidLoad {
    UISwipeGestureRecognizer *swipeRIGHT = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(screenWasSwipedRight)];
    swipeRIGHT.numberOfTouchesRequired = 1;
    swipeRIGHT.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:swipeRIGHT];

}

-(void)screenWasSwipedRight{
    BackMovement = [NSTimer scheduledTimerWithTimeInterval:0.0035 target:self selector:@selector(BackMovingRight) userInfo:nil repeats:YES];
}

-(void)BackMovingRight{
    Back.center = CGPointMake(Back.center.x+1, Back.center.y);
}

它适用于所有其他方向。 但是这个代码的正确方向部分只有在我向我扫描不是我想要的图像时才有效。

任何帮助都非常感谢我完全陷入困境

===============>>#1 票数:2

几点意见:

  1. 滑动手势是一种离散手势,仅在您移动所需距离时才会被识别,并且会导致对action选择器的单次调用。 因此,如果图像足够小,则所需的距离可能使得手指不再在识别手势之前移动的图像视图上方。

    您可能需要考虑使用连续手势,例如UIPanGestureRecognizer ,而不是离散手势。 这样,您可以在用户的​​手指在屏幕上移动图像的同时拖动图像。 它产生了响应更快的UI。 所以你可以这样:

     UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; [viewToAnimate addGestureRecognizer:pan]; 

     - (void)handlePan:(UIPanGestureRecognizer *)gesture { static CGPoint originalCenter; if (gesture.state == UIGestureRecognizerStateBegan) { originalCenter = gesture.view.center; } else if (gesture.state == UIGestureRecognizerStateChanged) { CGPoint translate = [gesture translationInView:gesture.view]; gesture.view.center = CGPointMake(originalCenter.x + translate.x, originalCenter.y + translate.y); // or, if only moving horizontally, use CGPointMake(originalCenter.x + translate.x, originalCenter.y) } else if (gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerStateCancelled) { // do whatever you want here when the user lets go, eg animate the rest of the way to some location [UIView animateWithDuration:0.5 animations:^{ gesture.view.center = ... // perhaps animate to some new location }]; } } 

    唯一的问题是当他们放手时你想做什么。 你可能想把它放在他们放手的地方。 或者您可能希望得出结论,他们已经移动得足够远,以便在他们放手时将其设置为某个新目的地,或者如果他们没有将其移动得足够远,则将其移回原始位置。 这一切都取决于你想要的用户体验。

  2. 您正在使用计时器制作动画,但如果您想在用户放手后进行一些“完成”动画,则使用animateWithDuration会更容易,例如:

     [UIView animateWithDuration:0.5 animations:^{ viewToAnimate.frame = ... // set the destination of where you want it to animate to }]; 

    也许:

     [UIView animateWithDuration:0.5 animations:^{ viewToAnimate.frame = ... // set the destination of where you want it to animate to } completion:^(BOOL finished) { // do here whatever you want to do when the animation is done }]; 

不幸的是,这里的细节会因您想要的UX而有很大不同。 例如,如果您将手指向中间拖动一半,是否要将其拖动到中途并停止,或者在剩下的路线上设置动画,或者返回。

同样地,你暗示还有其他手势:那么你想要的互动是什么? 假设用户开始向右拖动并且手指仍然向下,停止并开始向左移动。 如果您想要这种行为,您可能需要为所有四个方向单个平移手势。 如果您想要单独的手势,那么您可能想要深入研究子类手势识别器的世界。 这一切都取决于你需要什么。

但简短的回答是,如果您希望手势能够更快地导致UI更改,您可能必须从简单的离散手势(如滑动手势)升级到更复杂的连续手势识别器(例如平移手势或您自己的手势)自定义手势子类)。

有关更多信息,请参阅iOS事件处理指南中的“ 手势识别器”部分 或者也许看WWDC 2012视频构建高级手势识别器

  ask by Gray translate from so

未解决问题?本站智能推荐:

1回复

在iOS中给定手势后如何保存图像

这是我的透明图像(正面图像)。 这是我选择的图像(背面图像)。 我正在对背面图像做手势。 使用平移,收缩,旋转手势后如何保存图像。 目前能够合并两个图像,但背面图像却可以保存(下图) 使用此代码 我认为我应该处理这两行,但我不知道该如何处理
2回复

在UIImageView上长按手势

我有一个UIImageView图像圈。 我想长按图片放大并将其移动到另一个地方,当它被释放时它会下降并保留在这个地方。 但是当我松开手指时,图片会移动到起始位置。 为什么? 这是代码:
1回复

如何将手势限制在UIImageView的范围内?

我想限制黑色图像UIView在girlimageview bounds内移动。我不应该移动到girlimageview之外。 我的girlimageview是带框架的静态图像(5,0,310,320) 我正在使用UIGestureRecognizer在imageview上移动黑色图
4回复

如何限制平移手势区域?

我正在使用我的UIImageView ,我正在使用另一个UIView矩形。 通过将平移手势应用于UIView矩形,它也可以在UIImageView之外。 我不想被拖到UIImageView之外 我尝试了下面的代码,但它没有那样工作 如果我慢慢地应用Pan,它会应用这个条件但是当
1回复

添加到UIImageView的点击手势无响应

我想让UIImageView响应用户点击。 我在情节提要中添加图像视图,并为其设置标签。 然后在viewDidLoad : 但是我的响应方法openCourseView:从未调用过。 然后,我尝试使用IBOutlet将手势识别器添加到图像视图,但仍然没有响应。 有什么问题?
1回复

手势整理器不起作用

我在使手势起作用时遇到了一些麻烦。 让我解释一下:我得到一个视图,其中包含背景的UIImageView和背景的UIImageView。 在背景图像视图中,我添加了一些包含图像和按钮的UIView,以便用户可以编辑。 当我在ImageView上编辑这些视图时,一切正常。 但是,如果我开始在
1回复

改变手势识别器的位置?

我有一个手势识别器来检测UIImageView上的敲击,但是当iPad的方向改变时,我强制对图像进行位置更改,但这会导致手势识别器重新定位不正确。 我该如何解决这个问题? 编辑: 以上是我设置手势的方法,将其添加到我的UIImageView中。 但是,可能引起轰动的是我将此视图
1回复

手势识别器未激活 - UIScrollView内的UIImageView

我一直在看这段代码,但仍然感到困惑,为什么它不起作用。 基本上:1。用户选择表格视图单元格2. UIScrollView是包含高分辨率图像或UIImage的调用。 3.以下称为Map.m 手势没有从图像中获取? 请帮忙
1回复

如何跳过手势以查看最高视图-iOS

我将UIImageView作为子视图添加到UIView ,然后将透明UIView添加到视图。 现在,透明视图是最上面的视图。 但是我想在uiimageView上使用Pan,Pinch,旋转手势。 透明视图将向用户发送一些文本消息或某些网格线,以指示用户执行某些任务,例如图像旋转,收
6回复

UIImageView上的手势识别器(滑动)

当我使用此代码在UIImageView上滑动时,我尝试使用NSLog,但是由于某些原因它不起作用。 任何的想法 ?