按住可使图像移动

时间:2012-08-04 06:36:14

标签: objective-c ios xcode cocoa

我有一个按钮和一个图像。按下按钮时,我希望图像能够在屏幕上快速显示。在我按下它之后,我放开后就移动了。我需要它在一段时间后开始移动并在我放手时停止。 这就是我所拥有的:

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

    x = x + 100;
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这可以在界面构建器中完成,只需按下按钮触摸属性而不是内部触摸。在代码中它看起来像这样:

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

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