如何在UIView中放置UITableViewController使touchesBegan在iPhone中工作?

时间:2011-07-18 12:28:59

标签: iphone uiview uinavigationcontroller uitableview touchesbegan

我创造&从另一个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];
}

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

但我知道这些触摸开始的方法只适用于UIView&不是用UIViewController(我是对的吗?)。但我不知道在哪里&如何(我尝试在createTable2函数本身。它不起作用)添加一个UIView,然后在UIView中添加Table2来做事情......任何建议....

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

注意始终调用超级方法声明,以便您的触摸可以在响应链上移动。