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
类可以解决这个问题,但我正在寻找一个简单的解决方案。此外,我没有使用图像,只使用标题文本。