在动画期间检测按钮按下
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 .....");
];
【讨论】:
以上是关于在动画期间检测按钮按下的主要内容,如果未能解决你的问题,请参考以下文章