以编程方式禁用单击UIButton时的突出显示

时间:2013-07-10 20:21:12

标签: ios objective-c uibutton

必须有办法做到这一点,但我找不到它。我有一个按编程方式创建的按钮:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(25, self.view.frame.size.height/4, 200, 350);
[button setTitle:@"Inbox" forState:UIControlStateNormal];
[button addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

我想要的只是按钮在触摸时不以任何方式突出显示或改变外观。到目前为止,我在创建按钮时尝试了以下内容:

[button setBackgroundImage:[UIImage imageNamed:nil] forState:UIControlStateSelected | UIControlStateHighlighted];

[button setBackgroundImage:nil forState:UIControlStateSelected];

AND

[button setAdjustsImageWhenHighlighted:NO];

button.showsTouchWhenHighlighted = NO;

然后在我尝试的按钮操作中:

[sender setHighlighted:!sender.isHighlighted];

[sender setSelected:!sender.isSelected];

这些都不起作用。

4 个答案:

答案 0 :(得分:12)

您只需将adjustImageWhenHighlighted设置为No。

即可
button.adjustsImageWhenHighlighted = NO;

答案 1 :(得分:9)

使您的UIButton成为自定义按钮,然后为其应用UIImage背景。按下时不会突出显示或更改

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

答案 2 :(得分:6)

兄弟,我和你一样尝试过不同的方式。 但终于找到了我自己的食谱:

我不知道如何使用带有UIImage的自定义按钮 但对于带有高亮状态文本的简单UIButton您应该只设置与默认状态下相同的设置。

对于突出显示的状态,IB中的图像属性设置了一个空格。 您可能会发现,单击按钮时,按钮可能会有一个奇怪的小偏移量。对于这种情况,请从textField中删除突出显示状态的文本。它将解决这个问题。

enter image description here

然后在您的点击事件中,您将看不到任何眨眼。

答案 3 :(得分:0)

对于那些使用色调颜色打开的自定义PNG图像的用户,可以使用以下代码避免变暗(例如从白色变为灰色):

 clearButton.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;