我有一个主UIViewController
,其中大多数用户的互动发生。在主ViewController中有三个子视图。用户可以将单独的ViewControllers加载到UIView子视图中。
每个加载的子视图都处理数据输入。反过来,firstResponders
被调用。我希望能够通过主ViewController关闭firstRespnders
,也许可以使用'完成'按钮。
我原以为我可以在每个单独的子视图中添加一个名为ex;
的方法-(void) methodToResignResponders {}
然后,在主ViewController中将此方法调用到当前对用户开放的视图中。反过来辞职在子视图中处于活动状态的响应者。
更多信息:
这就是我将每个视图设置为主ViewController的子视图的方式:
UIViewController *calcVC;
//set up the view to be added depending on the name of the view that was passed
if ([viewName isEqualToString:@"Tax"]) {
calcVC= [[TAXViewController alloc]initWithNibName:@"TAXViewController" bundle:nil];
}else if ([viewName isEqualToString:@"Rent"]){
calcVC= [[RENTViewController alloc]initWithNibName:@"RENTViewController" bundle:nil];
}else //continues with more views...
//Then add it to the subview
[firstView addSubview:calcVC.view];
答案 0 :(得分:1)
不确定我是否掌握了这一点,主要是因为听起来你自己已经解决了这个问题。 :)
但是,从我所看到的,您所讨论的ViewController始终是名为calcVC的UIViewController实例。如果你指的是这个viewController的视图,你可以简单地调用[calcVC.view resignFirstResponder];
答案 1 :(得分:1)
您可以制作一个所有子视图控制器实现的基本协议,它可以完成您所需的一切(辞职第一响应者和其他任何东西)。
答案 2 :(得分:0)
不确定这是否回答了您的问题,但您可以遍历所有子视图并调用它,如果它存在,如下所示:
for (UIView *subview in [self.view subviews]) {
if ([subview respondsToSelector:@selector(resignFirstResponder)]) {
[subview resignFirstResponder];
}
}