2013-01-21 28 views
1

我試圖用兩個按鈕實現分段控制的模擬。在默認狀態下,他們沒有圖像,只有標籤,在選定的一箇中有背景圖像。我想用TouchDown事件激活控制。如何禁用UIButton突出顯示操作

這裏是代碼(我刪除了所有不必要的東西):

-(IBAction) onButton1 
{ 
    button1.selected = YES; 
    button2.selected = NO; 
} 

-(IBAction) onButton2 
{ 
    button1.selected = NO; 
    button2.selected = YES; 
} 

的問題是:Button1的選擇承擔。當我觸摸按鈕2時,它不會將其圖像更改爲「選定」圖像(如我所說沒有默認圖像),但是當我釋放手指時,它會改變。另外,如果我觸摸已經選擇的按鈕,它將刪除「選定」的圖像,並在我釋放時返回它。

我已經設置了突出顯示的按鈕狀態,因此它們在該狀態下具有「選定」圖像,但它沒有幫助(不僅在IB中,而且在[button setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateHighlighted];中)。我已經設置了adjustsImageWhenHighlighted = NO,這同樣無法以程序和IB的方式提供幫助。

我在這裏看到很多類似的(但不完全相同)的問題,但它們並不適用於我。

在此先感謝

回答

0

因爲,你想激活在觸及事件的行動,我認爲你不需要強調。嘗試下面的代碼

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button1.frame = CGRectMake(10.0f, 10.0f, 50.0f, 50.0f); 
    [button1 setBackgroundImage:[UIImage imageNamed:@"btn.jpeg"] forState:UIControlStateNormal]; 
    [button1 setBackgroundImage:[UIImage imageNamed:@"btnsel.jpeg"] forState:UIControlStateSelected]; 
    [button1 addTarget:self action:@selector(button1Action:) forControlEvents:UIControlEventTouchDown]; 
    [button1 addTarget:self action:@selector(button1TouchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; 

    [self.view addSubview:button1]; 
    button1.selected = YES; 

    button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button2.frame = CGRectMake(80.0f, 10.0f, 50.0f, 50.0f); 
    [button2 setBackgroundImage:[UIImage imageNamed:@"btn.jpeg"] forState:UIControlStateNormal]; 

    [button2 setBackgroundImage:[UIImage imageNamed:@"btnsel.jpeg"] forState:UIControlStateSelected]; 
    [button2 addTarget:self action:@selector(button2Action:) forControlEvents:UIControlEventTouchDown]; 
    [button2 addTarget:self action:@selector(button2TouchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; 

    [self.view addSubview:button2]; 
} 

- (void)button1Action:(UIButton*)sender 
{ 
    button1.highlighted = NO; 
    button1.selected = YES; 
    button2.selected = NO; 
} 

- (void)button2Action:(UIButton*)sender 
{ 
    button2.highlighted = NO; 
    button2.selected = YES; 
    button1.selected = NO;  
} 

- (void)button1TouchUp:(id)sender 
{ 
    button1.highlighted = NO; 
} 

- (void)button2TouchUp:(id)sender 
{ 
    button2.highlighted = NO; 
} 
+0

我不僅需要亮點,它不應該在這裏。你的代碼真的禁用它,除非你觸摸已經選擇的圖像的情況..應該有最後一步:)無論如何,謝謝 – medvedNick

+0

我真的不明白你的意見。不過,我分享了該項目的鏈接https://www.dropbox.com/s/3k4fyswhg7kyij4/Stack.zip。你可以看看。謝謝。 – Avigit

+0

對不起,我的英語。我應該真的改善它,並停止使用英文的俄語語言結構:)我最後設置突出= NO在TouchUp,TouchDown和TouchDrag事件,似乎都工作,所以謝謝你的回答! – medvedNick