UIButton с пользовательским представлением-addTarget: действие: forControlEvents: не работает
моя кнопка выглядит следующим образом
- создал label1
- создал label2
- создано customView (
UIView
) - добавлена label1 и label2 на пользовательском представлении
- создан myCustomButton (
UIButton
) - добавлен пользовательский вид на myCustomButton
я уже сделал userInteractionEnable для custom_View, label1 и label2.
добавил[myCustomButton addTarget:self action:@selector(OnButtonClick:) forControlEvents:UIControlEventTouchUpInside];
и
-(void)OnButtonClick:(UIButton *)sender
{
}
но выше функция никогда не вызывается, даже когда я нажмите кнопку. Есть решение?
2 ответов
просто небольшая проблема с вашим кодом мой друг, вам просто нужно добавить только одну следующую строку в свой код, забудьте setUserInteractionEnabled:NO
to UIView
Это позволит вам нажать на кнопку
UILabel *lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
[lbl1 setText:@"ONe"];
UILabel *lbl2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 100, 30)];
[lbl2 setText:@"Two"];
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 130)];
[view setUserInteractionEnabled:NO];
[view addSubview:lbl1];
[view addSubview:lbl2];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn addSubview:view];
[btn setFrame:CGRectMake(0, 0, 200, 130)];
[btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
Выберите Способ
-(void)click
{
NSLog(@"%s",__FUNCTION__);
}
вместо того, чтобы создавать customView (экземпляр UIView) , вы добавляете customView как экземпляр UIControl, а также addTarget в customView,
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:CGRectMake(10,10,300,300)];
UIControl *customView = [[UIControl alloc] initWithFrame:CGRectMake(0,0,300,300)];
[customView addTarget:self action:@selector(customViewClicked:) forControlEvents:UIControlEventTouchUpInside];
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10,10,100,100)];
[label1 setText:@"Hello How are you ?"];
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10,150,100,100)];
[label1 setText:@"I am fine Thnank You!"]
[customView addSubView:lebel1];
[customView addSubView:lebel2];
теперь в методе CustomViewClicked
-(void)customViewClicked:(id)sender
{
UIControl *senderControl = (UICotrol *)sender;
NSLog(@"sender control = %@",senderControl);
}
надеюсь, что это поможет вам.