2013-07-10 114 views
8

必須有辦法做到這一點,但我找不到它。我有我已編程方式創建一個按鈕:以編程方式禁用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

回答

9

使您的UIButton成爲一個自定義按鈕,然後爲其應用UIImage背景。它不會突出或更改按下

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

很好的回答! – Asmita

12

時,你可以簡單地設定adjustImageWhenHighlighted到

button.adjustsImageWhenHighlighted = NO; 
+0

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

+0

偉大的答案我從這兩天看這 – Asmita

6

兄弟,我已經嘗試了不同的方式爲你。 但最後發現我自己的食譜:

我不知道它是怎麼用的UIImage自定義按鈕的工作就可以了 但對於一個簡單的UIButton與文本的heighlighted狀態,您應該簡單地將相同的設置你已經處於默認狀態。

而對於突出顯示狀態爲IB的圖像屬性設置一個空格。 您可能會發現,有時按鈕在點擊時可能有一個奇怪的小偏移量。對於這種情況,請從textField中刪除突出顯示狀態的文本。它將解決這個問題。

enter image description here

然後在點擊事件,你會看到沒有閃爍的。

+0

這是一個駭人聽聞的解決方案。 –

+1

這是一個黑客解決方案,它可以快速處理Xcode 6.2 beta 5。沒有什麼不正常的「正常」工作。你剛剛救了我的白天和黑夜。 Gj –

+0

設置與「默認」狀態相同的圖像,爲我工作。 – Resty

0

對於使用與着色顏色自定義的PNG圖像的打開,你能避免使用此代碼調光(例如,從白到灰):

clearButton.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 
相關問題