UIButton没有响应UITableViewCell中的click事件

在ios中有这种黑暗的巫术阻止我的按钮被点击。 如果我没有向uitableviewcell添加按钮,我点击按钮,就会触发事件。 但是如果按钮在uitableviewcell中,它就不会被触发,看来桌面我准备了示例代码,如果你们可以帮助我,请在xcode中创建一个简单的单视图应用程序,然后粘贴下面的代码

//GRDViewController.h

#import  @interface GRDViewController : UIViewController  @property (nonatomic, strong) UIView* container; @property (nonatomic, strong) UIButton* button; @property (nonatomic, strong) UITableView* tableView; @property (nonatomic, strong) NSArray* arr; @end 

//GRDViewController.m

 #import "GRDViewController.h" @implementation GRDViewController @synthesize button, container, arr, tableView; - (void)_btnTapped { NSLog(@"TAPPED"); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; [self.button addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlEventTouchUpInside]; [self.button setTitle:@"CLICK ME" forState:UIControlStateNormal]; self.arr = [[NSArray alloc] initWithObjects:@"123", @"456", @"678", nil]; self.container = [[UIView alloc]initWithFrame:self.button.frame]; [self.container addSubview:self.button]; [self.view addSubview:self.container]; //[self.view addSubview:self.button]; self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 100, 400, 400)]; self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.delegate = self; self.tableView.dataSource = self; [self.view addSubview:self.tableView]; self.tableView.backgroundColor = [UIColor redColor]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath { static NSString *cellIdentifier = @"coolcell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; //cell.accessoryType = UITableViewCellAccessoryNone; UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; [btn addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlStateNormal]; [btn setTitle:[self.arr objectAtIndex:[indexPath row]] forState:UIControlStateNormal]; [cell.contentView addSubview:btn]; } return cell; } - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { return [self.arr count]; } @end 

请帮助我觉得这个案子应该在ios中很常见,但是没有人能解决这个问题???

编辑:当点击按钮时,它会在xcode控制台中输出NSLOG消息…所以请确保…你在那里查看结果…

你没有给按钮任何控制事件。从UIControlStateNormal更改为UIControlStateNormal

而不是使用UIControlStateNormal用于ControlEvents使用UIControlEventTouchUpInside这样

 [btn addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlEventTouchUpInside]; 

试着这样做:

[btn.titleLabel setUserInteractionEnabled: NO];