-2

我有一个按钮和一个图像。按住按钮时,我希望图像快速在屏幕上播放。现在,我按住它之后,我松手后它就会移动。我需要它在一定时间后开始移动,并在我放手时停止。这是我所拥有的:

- (IBAction)buttonDown:(id)sender
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];

    x = x + 100;
}
4

2 回答 2

1

使用下面的代码,你必须按下 3 秒来移动 _imageView,然后图像开始移动,当你释放按钮时,图像停止。

ss

- (IBAction)pushToMove:(id)sender {
    [self performSelector:@selector(move) withObject:nil afterDelay:3.0];
}

- (void)move
{
    _nt = [NSTimer scheduledTimerWithTimeInterval:0.1
                                                   target:self
                                                 selector:@selector(goRight)
                                                 userInfo:nil
                                                  repeats:YES];
}

- (void)goRight
{
    _imageView.frame = CGRectMake(_imageView.frame.origin.x + 10, _imageView.frame.origin.y,
                                  _imageView.frame.size.width, _imageView.frame.size.height);
}

- (IBAction)stop
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(move) object:nil];
    [_nt invalidate];
}

我把这个示例项目放到了 GitHub 上。您可以下载并运行它。

https://github.com/weed/p120804_ImageMoveDuringPushButton

于 2012-08-04T10:29:26.977 回答
0

这可以通过简单地喜欢按钮的 touch down 属性而不是内部的 touch up 来在界面构建器中完成。在代码中它看起来像这样:

[myButton addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchDown];

除此之外,您还需要对动画进行一些状态检查,并UIViewAnimationOptionBeginFromCurrentState用作选项来帮助它在用户再次按下按钮时从中断的地方继续。

于 2012-08-04T06:56:31.183 回答