在动画期间检测按钮按下

Posted

技术标签:

【中文标题】在动画期间检测按钮按下【英文标题】:Detection of button press during animation 【发布时间】:2014-12-08 14:20:16 【问题描述】:

我正在使用以下代码构建一个简单的按钮缩放效果来构建一个简单的游戏。 我希望用户触摸在缩放期内导致某些事情的按钮。如果他们在那段时间内无法触摸它,那么会发生其他一些事情。

但是使用下面的代码,按钮只能在动画完成后检测到触摸。我真的不想要。我希望它能够在动画期间被检测到。我应该使用什么代码才能做到这一点?

谢谢

-(void) start
hit1= [UIButton buttonWithType:UIButtonTypeRoundedRect];
[hit1 addTarget:self action:@selector(rolebutton:) forControlEvents:UIControlEventTouchUpInside];
[hit1 setFrame:CGRectMake(575, 255, 45, 45)];
hit1.translatesAutoresizingMaskIntoConstraints = YES;

[hit1 setBackgroundImage:[UIImage imageNamed:@"roles.png"] forState:UIControlStateNormal];
[hit1 setExclusiveTouch:YES];


hit1.transform = CGAffineTransformMakeScale(0.01, 0.01);
[self.view addSubview:hit1];
[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationCurveEaseInOut
                 animations:^
                     hit1.transform = CGAffineTransformMakeScale(1, 1);
                     hit1.alpha = 1;
                 
                 completion:^(BOOL finished)
                     if (finished)
                     

                         [hit1 removeFromSuperview];


                         NSLog(@"customView Displayed .....");

                     
                 ];

-(void) rolebutton:(UIButton*) sender
    NSLog(@"hit");



/*

【问题讨论】:

【参考方案1】:

使用动画选项UIViewAnimationOptionAllowUserInteraction

-(void) start
hit1= [UIButton buttonWithType:UIButtonTypeRoundedRect];
[hit1 addTarget:self action:@selector(rolebutton:) forControlEvents:UIControlEventTouchUpInside];
[hit1 setFrame:CGRectMake(575, 255, 45, 45)];
hit1.translatesAutoresizingMaskIntoConstraints = YES;

[hit1 setBackgroundImage:[UIImage imageNamed:@"roles.png"] forState:UIControlStateNormal];
[hit1 setExclusiveTouch:YES];


hit1.transform = CGAffineTransformMakeScale(0.01, 0.01);
[self.view addSubview:hit1];
[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction
                 animations:^
                     hit1.transform = CGAffineTransformMakeScale(1, 1);
                     hit1.alpha = 1;
                 
                 completion:^(BOOL finished)
                     if (finished)
                     

                         [hit1 removeFromSuperview];


                         NSLog(@"customView Displayed .....");

                     
                 ];

【讨论】:

以上是关于在动画期间检测按钮按下的主要内容,如果未能解决你的问题,请参考以下文章

检测音量按钮即使在音量最大时按下

在android中检测主页按钮按下

在颤动中打开对话框时检测返回按钮按下

音量未更改时检测硬件音量按钮按下

检测按下了哪个按钮

Godot:检测按下的鼠标是不是在按钮上方