3

我需要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 和 7 上都能正常工作,但到目前为止我还没有找到一个好的解决方案(一种解决方法是在短暂延迟后排队一个突出显示按钮的事件,但是产生令人讨厌的按钮闪烁)。有什么建议吗?

4

3 回答 3

4

至于.highlighted您正在使用的“”属性,Apple 文档指出:“UIControl 会在跟踪期间进入和退出触摸以及进行触摸时自动设置和清除此状态。”

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

于 2013-10-06T21:26:28.463 回答
1

尝试这个:

[UIView animateWithDuration:1
                     animations:^{
                     }
                     completion:^(BOOL finished) {
                         button.highlighted = true;
                         button.selected = true;
                     }
];
于 2013-12-10T20:02:57.180 回答
0

这可能有点晚了,但我最终解决这个问题的方法是在块中将图层背景颜色设置为灰色,以设置按钮突出显示。然后当我将高亮状态设置为 false 时,我将背景颜色设置回白色。为此,您必须使用自定义按钮,而不是圆角矩形按钮。

于 2013-11-05T21:03:03.320 回答