触摸不响应UITableView

Oli*_*nge 0 objective-c uitableview ios

我有一个带有UINavigationViewController的故事板,它包含一个UITableView和一个UIToolBar.TableView填充得很好但在触摸TableViewCell时没有响应.它会停止但选择不会持续,并且不会调用处理函数.当我在单元格上进行某种滑动时,它有时会记录触摸事件并调用处理程序.看起来好像无法识别或阻止touchEvents.这是我的设置:

在此输入图像描述

在此输入图像描述

NavigationView的View组件配置

在此输入图像描述

UITableView配置

值得注意的是,如果我用两根手指触摸单元格,它会选择单元格......!所以在这种情况下调用此处理程序:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.selectedWerkzaamheden = self.model.selectedWerkorder.werkbonWerkzaamheden;
    self.selectedWerkzaamheden = [NSMutableArray arrayWithArray:self.model.selectedWerkorder.werkbonWerkzaamheden];

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(dismissKeyboard)];

    [self.view addGestureRecognizer:tap];
    [self.myTableView reloadData];
}

...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.selectedWerkzaamheidIndex = indexPath.row;
    self.selectedWerkzaamheid = self.selectedWerkzaamheden[self.selectedWerkzaamheidIndex];
    self.trashBtn.enabled = TRUE;
}
Run Code Online (Sandbox Code Playgroud)

声明文件:

#import "LmxViewController.h"
#import "LmxDropDownDataVO.h"

@interface LmxWerkzaamheidViewController : LmxViewController <UITableViewDataSource>

@property NSString *faultTitle;
@property NSString *faultMessage;
@property IBOutlet UIButton *selectWerkzaamheidBtn;
@property LmxDropDownDataVO *selectedWerkzaamheid;
@property NSInteger selectedWerkzaamheidIndex;
@property NSMutableArray *selectedWerkzaamheden;
@property IBOutlet UIBarButtonItem *submitBtn;
@property IBOutlet UITableView *werkzaamheidTableView;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *trashBtn;

- (IBAction)selectWerkzaamheid:(id)sender;
- (IBAction)saveWerkzaamheidWithWerkorder:(id)sender;
- (IBAction)cancel:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)

我供应细胞的方式可能有问题吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSMutableArray *werkzaamheden = self.selectedWerkzaamheden;

    static NSString *simpleTableIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;

    NSInteger row = indexPath.row;
    LmxDropDownDataVO *data = (LmxDropDownDataVO *)werkzaamheden[row];
    cell.textLabel.text = data.naam;
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*nge 6

问题是我确实在viewDidLoad类中留下了一段代码,该代码模糊了表视图单元格的触摸事件.

 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)];

    [self.view addGestureRecognizer:tap];
Run Code Online (Sandbox Code Playgroud)

显然,这会阻止触摸事件到达Table View Delegate函数:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

谢谢你的贡献.