我有一个按钮和一个图像。按下按钮时,我希望图像能够在屏幕上快速显示。在我按下它之后,我放开后就移动了。我需要它在一段时间后开始移动并在我放手时停止。 这就是我所拥有的:
- (IBAction)buttonDown:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
x = x + 100;
}
答案 0 :(得分:1)
使用以下代码,您必须按3秒才能移动_imageView,然后图像开始移动,当您松开按钮时,图像会停止。
- (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上。您可以下载并运行它。
答案 1 :(得分:0)
这可以在界面构建器中完成,只需按下按钮触摸属性而不是内部触摸。在代码中它看起来像这样:
[myButton addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchDown];
除此之外,您还需要对动画进行一些状态检查,并使用UIViewAnimationOptionBeginFromCurrentState
作为选项,以帮助它在用户再次按下按钮时从中断处继续。