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

问题描述:

必须有办法做到这一点,但我找不到它。我有我已编程方式创建一个按钮:以编程方式禁用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]; 

[button setAdjustsImageWhenHighlighted:NO]; 

button.showsTouchWhenHighlighted = NO; 

然后在按钮的动作我试着:

[sender setHighlighted:!sender.isHighlighted]; 

[sender setSelected:!sender.isSelected]; 

这些都不工作。

+0

你看着showsTouchWhenHighlighted? – KHansenSF

+0

谢谢,刚试过,也不管用!我只是将它添加到我尝试过的事物列表中。 – jac300

+0

'[button setBackgroundImage:[UIImage new] forState:UIControlStateSelected];''或'adjustsImageWhenHighlighted'如何? – danypata

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

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
+0

很好的回答! – Asmita

时,你可以简单地设定adjustImageWhenHighlighted到

button.adjustsImageWhenHighlighted = NO; 
+0

很好的答案!另外2个字符 – EralpB

+0

伟大的答案我从这两天看这 – Asmita

兄弟,我已经尝试了不同的方式为你。 但最后发现我自己的食谱:

我不知道它是怎么用的UIImage自定义按钮的工作就可以了 但对于一个简单的UIButton与文本的heighlighted状态,您应该简单地将相同的设置你已经处于默认状态。

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

enter image description here

然后在点击事件,你会看到没有闪烁的。

+0

这是一个骇人听闻的解决方案。 –

+1

这是一个黑客解决方案,它可以快速处理Xcode 6.2 beta 5。没有什么不正常的“正常”工作。你刚刚救了我的白天和黑夜。 Gj –

+0

设置与“默认”状态相同的图像,为我工作。 – Resty

对于使用与着色颜色自定义的PNG图像的打开,你能避免使用此代码调光(例如,从白到灰):

clearButton.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;