为什么我的UITableView不响应touchesBegan?

Tho*_* N. 2 iphone uitableview ios

我正在使用这种方法

- (void)tableView:(UITableView *)tableView touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    if ([myPickerView isFirstResponder] && [touch view] != myPickerView) {
        [myPickerView resignFirstResponder];
    }
    [super touchesBegan:touches withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)

但我的tableView没有响应触摸(应用于视图工作,但这由tableView覆盖!)

如果这是不可能的 - 有没有其他可能捕获"窗外"的触摸?

Rob*_*ier 12

没有这样的委托方法tableView:touchesBegan:withEvent:.如果你想覆盖-touchesBegan:withEvent:你的UITableView,你需要子类UITableView.像这样的大多数问题往往更好地实现UIGestureRecognizer.在上面,我可能会使用一个UITapGestureRecognizer.


Ste*_*arp 11

我发现最简单的方法是在UITableViewController的视图中添加一个手势识别器.

我将此代码放在UITableViewController的viewDidLoad中:

UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tap];
Run Code Online (Sandbox Code Playgroud)

并实现了事件处理程序:

- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
    // your code goes here...
}
Run Code Online (Sandbox Code Playgroud)

编辑: 您还可以将手势识别器添加到tableview,只需更改[self.view addGestureRecognizer:tap];[self.tableView addGestureRecognizer:tap];