我需要在触摸事件后突出显示UIButton
。在iOS版本中< 7我在Touch Up Inside事件中使用了以下操作:
- (IBAction)clickMe:(id)sender {
UIButton *button = sender;
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
不幸的是,iOS 7中的某些内容已经发生了变化,而且此代码不再有效:如果我点击按钮,按钮将恢复正常状态;有趣的是,如果我按下按钮一会儿,按钮会保持高亮显示。请注意,该应用程序是为iOS 6开发的,因此它在iOS 7中以兼容模式运行。我正在试图找到一种方法来使应用程序在iOS 6和iOS上正常工作7但到目前为止我还没有找到一个很好的解决方案(一种解决方法是在短暂延迟后对突出显示按钮的事件进行排队,但会产生恼人的按钮闪烁)。有什么建议吗?
答案 0 :(得分:4)
As for the ".highlighted
" property you're using, Apple documentation states:“当跟踪期间触摸进入和退出以及触摸时,UIControl会自动设置并清除此状态。”
为什么不更改UIButton显示的UIImage,具体取决于您希望它出现的“状态”?我会将UIButton子类化,为它提供一个可以控制或设置的状态属性,并根据该状态显示不同的图像。
答案 1 :(得分:1)
试试这个:
[UIView animateWithDuration:1
animations:^{
}
completion:^(BOOL finished) {
button.highlighted = true;
button.selected = true;
}
];
答案 2 :(得分:0)
这对你来说可能有点晚了,但我最终解决这个问题的方法是在块中将图层背景颜色设置为灰色,以便突出显示按钮。然后当我将高亮状态设置为false时,我将背景颜色设置为白色。为此,您必须使用自定义按钮,而不是圆角矩形按钮。