我有一个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];
}

最佳答案

通常,按钮连接到按钮上的UIControlEventTouchUpInside事件。这意味着当用户触摸按钮时按钮会突出显示,并且如果用户误触摸按钮,则用户可以将其手指移到按钮外部并释放而不触发按钮。这也意味着触摸动画会在操作方法触发之前发生。

我建议将您的操作连接到UIControlEventTouchUpInside事件

10-08 05:35