0

我像这样从另一个 UITableViewController 类(比如 Table1)创建并呈现一个 UITableViewController(比如 Table2)类。

-(void)createTable2 {
     Table2Controller *table2Controller = [ [Table2Controller alloc] initWithStyle:UITableViewStyleGrouped];
     UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:table2Controller];
     [self.navigationController presentModalViewController:nav animated:YES];
     [nav release];
     [table2Controller release];
}

因此将显示表 2。我想使用 touchesBegan 方法在 Table2 中退出键盘,因为我有一些 UITextField 作为单元格。我在 Table2 的 .h 文件中包含了 UITextFieldDelegate 协议。

但我知道这些 touchesBegan 方法仅适用于 UIView 而不适用于 UIViewController(我对吗?)。但我不知道在哪里以及如何(我在 createTable2 函数本身中尝试过。它不起作用)添加一个 UIView,然后在该 UIView 中添加 Table2 以使事情发生......任何建议......

4

2 回答 2

1

您的表视图控制器具有表视图属性。您可以子类化表格视图,然后覆盖方法,例如-touchesBegan:withEvent:. 实例化您的自定义表格视图并将此实例设置为视图属性。

于 2011-07-18T12:37:45.200 回答
0

UIViewController 控制屏幕上呈现的 UIView 和其他 UI 元素。由于它们是子类的 UIResponder 类,所有这些元素都可以响应触摸。

使用 Table2Controller 覆盖 touchesBegan 方法来控制在此 viewController 内的任何 UI 元素上发生的触摸事件。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        [inputTV resignFirstResponder];
    [super touchesBegan:touches withEvent:event];
}

请注意始终调用超级方法声明,以便您的触摸可以沿着响应链向上传播。

于 2011-07-18T12:40:44.303 回答