2011-12-26 75 views
4

在我已經設置了下面的代碼來最初隱藏按鈕陣列組的視圖,控制器:按鈕titleLabel設置爲隱藏YES,再次出現在觸摸

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    for(UIButton * noteButtonItem in noteButtonArray){ 
     noteButtonItem.titleLabel.hidden = YES; 
     //NSLog(@"Title is %@", noteButtonItem.currentTitle); 
    } 
} 

從h文件:

@property (nonatomic,retain) IBOutletCollection(UIButton) NSArray *noteButtonArray; 

並通過IB連接

初始隱藏工作正常,但是當我觸摸一個按鈕(在模擬器中)時,titleLabel不會隱藏。

背後發生了什麼? 有沒有辦法讓他們保持隱藏狀態,直到隱藏設置爲YES?

回答

10

UIButton實例可以根據它們的狀態具有不同的配置(狀態描述爲here)。如果要在所有狀態中隱藏按鈕的標題標籤,則可以使用setTitle:forState:並將其標題設置爲@"",或者可以使用setTitleColor:forState:將顏色的alpha屬性更改爲0.0f,以便當按鈕處於州選擇。

+0

是的,如果你看看UIButton的文檔或頭文件,你會注意到很多與title/titleLabel有關的事情都有一個「forState」參數。當您直接寫入titleLabel屬性而不是使用setSomething:forState:/ setSomethingForState:方法時,您經常會輸入奇怪的地區。 –

+0

對於我有 'code' [noteButtonItem setTitleColor:[UIColor colorWithRed:100.0 green:100.0 blue:100 alpha:0.0] forState:UIControlStateNormal]; [noteButtonItem setTitleColor:[UIColor colorWithRed:100.0 green:100.0 blue:100 alpha:0.0] forState:UIControlStateHighlighted]; 'code' 代替 'code' noteButtonItem.titleLabel.hidden = YES; 'code' – jmhead

0

您可以使用其中一種跟蹤方法確保它在「被觸摸」之後仍保持隱藏狀態。這是從UIControl類參考:

跟蹤觸摸並重繪控制

  • - beginTrackingWithTouch:withEvent:方法
  • - continueTrackingWithTouch:withEvent:方法
  • - endTrackingWithTouch:withEvent:方法
  • - cancelTrackingWithEvent:
  • 跟蹤屬性
  • touchInside屬性
相關問題