2013-05-27 4 views
0

Как я могу определить, какие UIButton было постучали:.UIButton: несколько кнопок - как обнаружить событие и найти кнопку, которая прослушивается»

-(void) topScorer { 

    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button1 addTarget:self 
       action:@selector(buttonClicked:) 
    forControlEvents:UIControlEventTouchDown]; 
    [button1 setTitle:@"Button1" forState:UIControlStateNormal]; 
    button1.frame = CGRectMake(16, self.view.bounds.size.height*0.6, 60, 60); 
    UIImage *img1 = [UIImage imageNamed:@"img1.png"]; 
    button1.layer.cornerRadius = 10; 
    button1.layer.masksToBounds = YES; 
    [button1 setImage:img1 forState:UIScrollViewDecelerationRateNormal]; 
    button1.tag = 1; 
    [self.view addSubview:button1]; 

    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button2 addTarget:self 
      action:@selector(buttonClicked:) 
     forControlEvents:UIControlEventTouchDown]; 
    [button2 setTitle:@"Button2" forState:UIControlStateNormal]; 
    button2.frame = CGRectMake(92, self.view.bounds.size.height*0.6, 60, 60); 
    UIImage *img2 = [UIImage imageNamed:@"img2.png"]; 
    button2.layer.cornerRadius = 10; 
    button2.layer.masksToBounds = YES; 
    [button2 setImage:img2 forState:UIScrollViewDecelerationRateNormal]; 
    button2.tag = 2; 
    [self.view addSubview:button2]; 
} 


-(void) buttonClicked: (id)sender { 

    // How can I detect here which button is tapped? 
    // For Example, I want to do this: 

    // if button1 is pressed, do something 
    // if button 2 is pressed, do another thing 

} 

ответ

2

Транслируйте отправитель к UIButton и сравнить значение тега

UIButton *button = (UIButton *)sender; 

if (button.tag == 1) { 

} else { 

} 
+0

как всегда, совершенно забыл о типе литье: D, благодаря Жану – jeewan

+1

Это так, как я обычно делаю это, я хотел бы добавить, что вы должны сделать перечисление для тегов и сравнить, что кнопки помечать –

+3

Вместо отбрасывания параметра 'id'' s '' отправителя', вы можете объявить свой метод как: '- (void) buttonClicked: (UIButton *) button {'. – rmaddy

1

магазин кнопка в свойстве на ваш контроллер представления, а затем проверить против этого свойства:

@property (nonatomic, weak) UIButton *buttonOne; 

- (void)buttonTapped:(id)sender { 
    if (sender == buttonOne) { 
     // button one was tapped 
    } 
} 

или просто назначьте разные переключатели для каждой кнопки.

[buttonOne addTarget:self 
      action:@selector(buttonOneTapped:) 
forControlEvents:UIControlEventTouchUp]; 
[buttonTwo addTarget:self 
      action:@selector(buttonTwoTapped:) 
forControlEvents:UIControlEventTouchUp]; 
+0

Спасибо Степан, я просто понял, как я проигнорировал тип кастинга :-) – jeewan