Objective c 触摸后,保持UIButton高亮显示&;iOS 7

Objective c 触摸后,保持UIButton高亮显示&;iOS 7,objective-c,uibutton,ios7,compatibility,Objective C,Uibutton,Ios7,Compatibility,我需要在触摸事件后突出显示ui按钮。在iOS版本

我需要在触摸事件后突出显示
ui按钮
。在iOS版本<7中,我对内部事件使用了以下操作:

- (IBAction)clickMe:(id)sender {
    UIButton *button = sender;
    [NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
不幸的是,iOS 7中发生了一些变化,这段代码不再工作:如果我点击按钮,按钮将恢复到正常状态;有趣的是,如果我再按住按钮一段时间,按钮将保持高亮显示。请注意,该应用程序是为iOS 6开发的,因此它以兼容模式在iOS 7中运行。我正试图找出一种方法,使该应用程序在iOS 6和iOS 7上都能正常工作,但到目前为止,我还没有找到一个好的解决方案(一种解决方法是将一个事件排队,在短时间延迟后突出显示按钮,但会产生恼人的按钮闪烁)。有什么建议吗?

:“当跟踪过程中触摸进入和退出以及有触摸时,UIControl自动设置和清除此状态。”


为什么不根据您希望UIButton显示的“状态”更改其显示的UIImage?我会将UIButton子类化,为它提供一个可以控制或设置的状态属性,并根据该状态显示不同的图像。

这可能有点晚了,但我最终要做的是将块中的图层背景颜色设置为灰色,以设置突出显示的按钮。然后,当我将高光状态设置为false时,我将背景色设置回白色。要使其正常工作,您必须使用自定义按钮,而不是圆形矩形按钮。

尝试以下操作:

[UIView animateWithDuration:1
                     animations:^{
                     }
                     completion:^(BOOL finished) {
                         button.highlighted = true;
                         button.selected = true;
                     }
];

你说得对,沃尔夫。让我想一个稍微改写一下的答案。Michael,是的,我知道突出显示的
属性是如何工作的,但感谢您指出这一点。像我这样排队的操作通常会覆盖默认行为,因为该操作将在修补事件后发生。将突出显示的
重置为否。这是一个技巧,但简单有效。不幸的是,iOS 7显然改变了操作顺序。当然,子类化
UIButton
类可以解决这个问题,但我正在寻找一个简单的解决方案。此外,我没有使用图像,只使用标题文本。