触摸后放置UIButton突出显示IOS 7

时间:2013-10-06 21:21:24

标签: objective-c uibutton ios7 compatibility

我需要在触摸事件后突出显示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但到目前为止我还没有找到一个很好的解决方案(一种解决方法是在短暂延迟后对突出显示按钮的事件进行排队,但会产生恼人的按钮闪烁)。有什么建议吗?

3 个答案:

答案 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时,我将背景颜色设置为白色。为此,您必须使用自定义按钮,而不是圆角矩形按钮。