2015-12-18 62 views
0

從上這樣的問題,我知道這是正確的更改按鈕標籤文本與setTitle ... forState的UIButton setTitleColor forState效果很好,而的setTitle不

[_capturing_button setTitle:@"take photo!" forState:UIControlStateNormal]; 

在我的代碼,在用戶點擊我想禁用按鈕並設置文本"processing",處理完成後,啓用按鈕。

但是,當禁用按鈕,文字消失。

-(void) initCapturingButton 
{ 
    _capturing_button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    const int width = 150, height = 30; 
    _capturing_button.frame = CGRectMake(_main_view.frame.size.width/2.0 - width/2.0, 2, width, height); 
    _capturing_button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 

    [_capturing_button setTitle:@"take photo!" forState:UIControlStateNormal]; 
    [_capturing_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    //[_capturing_button setTitle:@"processing" forState:UIControlStateDisabled]; 
    [_capturing_button setTitleColor:[UIColor purpleColor] forState:UIControlStateDisabled]; 

    _capturing_button.enabled = YES; 

    [_capturing_button addTarget:self action:@selector(onCapturingButtonClick) forControlEvents:UIControlEventTouchUpInside]; 
    [_topToolBar addSubview:_capturing_button]; 

}

在按一下按鈕,我只是禁用按鈕:

-(void) onCapturingButtonClick 
{ 
    _capturing_button.enabled = NO; 
} 

而且處理結束時,使按鍵回:

-(void) processingFinished 
    { 
     _capturing_button.enabled = YES; 
    } 

有了這個代碼的時候,應用程序處於處理模式,按鈕文本具有紫色,當處於捕捉模式時,顏色爲白色。但是,如果我取消了關於爲禁用狀態設置標題的註釋,文本會消失。

我在做什麼錯?

+0

您是否嘗試過設置斷點並檢查按鈕的狀態?即使它不顯示我的用戶界面,您是否可以確認標題文本已設置? –

+0

@fragilecat:是的,我試過了。狀態是'UIControlStateDisabled',文本是「處理」。 –

+0

如果用[_capturing_button setTitle:@「拍照!」替換代碼行,會發生什麼? forState:UIControlStateNormal] ;? –

回答

1

由於您只是在onCapturingButtonClick方法禁用不改變按鈕狀態,您可以設置標題UIControlStateNormal。

-(void) onCapturingButtonClick 
{ 
    [_capturing_button setTitle:@"processing" forState:UIControlStateNormal]; 
    _capturing_button.enabled = NO; 
} 

,然後在processingFinished方法:

-(void) processingFinished 
    { 
     [_capturing_button setTitle:@"take photo!" forState:UIControlStateNormal]; 
     _capturing_button.enabled = YES; 
    } 

UIButton類參考文獻:

UIControlStateDisabled控制的

禁用狀態。此狀態表示控件當前>已禁用。您可以通過啓用的屬性檢索並設置此值。

相關問題