我有一个UIButton应该在选择后更改背景图像。 当按钮没有活动,或者活动在同一个UIViewController中时,一切正常。
但是如果按钮正在激活推送到另一个视图,那么用户将永远不会看到按下按钮时应该出现的图像。
我可以使用[NSTimer scheduledTimerWithTimeInterval:0.1 ....
来解决这个问题但我想知道是否有办法毫不拖延地做到这一点。
代码:
playBTN = [[UIButton alloc] initWithFrame:CGRectMake(100, 90, 121, 119)];
[playBTN setImage:[UIImage imageNamed:@"play_BTN"] forState:UIControlStateNormal];
[playBTN setImage:[UIImage imageNamed:@"play_BTN_press"] forState:UIControlStateHighlighted];
[playBTN setImage:[UIImage imageNamed:@"play_BTN_press"] forState:UIControlStateSelected];
[playBTN addTarget:self action:@selector(actPlay) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:playBTN];
-(void)actPlay
{
GamePlayViewController *game = [[GamePlayViewController alloc] initWithNibName:@"GamePlayViewController" bundle:nil];
[self.navigationController pushViewController:game animated:YES];
}
答案 0 :(得分:2)
通常按钮连接到按钮上的UIControlEventTouchUpInside事件。这意味着当用户触摸按钮时按钮突出显示,并且用户可以将他/她的手指移动到按钮之外并且如果他们错误地触摸它则释放而不触发它。这也意味着触摸动画在动作方法触发之前发生。
我建议您将操作连接到UIControlEventTouchUpInside事件