我有一个 UIButton,它应该在被选中时更改背景图像。 当按钮没有事件时,或者当事件在同一个 UIViewController 中时,一切正常。
但是如果按钮激活了对另一个 View 的推送,那么用户将永远不会看到在他按下按钮时应该出现的图像。
我可以使用 [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 事件
关于ios - 推送到新 View 时 UIButton 未突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350476/