UIButton 不响应 UITableViewCell 中的单击事件



iOS中的这种黑暗巫术阻止了我的按钮被点击。 如果我不将按钮添加到 uitableViewCell,并且我单击该按钮,则会触发该事件。但是如果按钮在 uitableViewCell 中,它不会被触发,它似乎是表格我已经准备好了示例代码,如果你们可以帮助我,请在 Xcode 中创建一个简单的单视图应用程序,然后粘贴以下代码

/

/GRDViewController.h

#import <UIKit/UIKit.h>
@interface GRDViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@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 UIControlEventTouchUpInside

不要对 ControlEvents 使用UIControlStateNormal,请使用这样的UIControlEventTouchUpInside

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

尝试这样做:

[btn.titleLabel setUserInteractionEnabled: NO];