Iphone 未在子视图内调用UItextView委托方法

Iphone 未在子视图内调用UItextView委托方法,iphone,cocoa,uitextfield,Iphone,Cocoa,Uitextfield,简言之: 在ClassA_VC中,我做: ClassB_VC *classB_VC=[ClassB_VC alloc]initWithNibName:@"ClassB_VC" bundle:nil]; [self.view addSubview:classB_VC.view]; 然后在ClassB_VC中,我有一个UITextField。我在IB中设置了textfield和文件所有者之间的委托连接,我在@interface声明中添加了代理连接,并像往常一样编写了协议方法(TextFieldDi

简言之:

在ClassA_VC中,我做:

ClassB_VC *classB_VC=[ClassB_VC alloc]initWithNibName:@"ClassB_VC" bundle:nil];
[self.view addSubview:classB_VC.view];
然后在ClassB_VC中,我有一个UITextField。我在IB中设置了textfield和文件所有者之间的委托连接,我在@interface声明中添加了代理连接,并像往常一样编写了协议方法(TextFieldDiEndediting、TextFieldDiBeginediting等)

这应该是可行的,但我在触摸文本字段时遇到了一个异常。textfield似乎没有到达其代理

但是,如果我使用presentModalViewController呈现视图,一切都正常。我更愿意不必这样做,因为这些视图都位于tabViewController中,并且我不希望在显示时隐藏tabBar


我希望你明白我想说的话。我的英语不是很好。

从interface builder中删除代理并执行以下操作:

ClassB_VC *classB_VC=[ClassB_VC alloc]initWithNibName:@"ClassB_VC" bundle:nil];
[classB_VC.yourTextField setDelegate:classB_VC];
[self.view addSubview:classB_VC.view];

让我知道这是否有帮助

您是否在ClassA\u VC中保留ClassB\u VC?

完整的异常消息将很有帮助。由于UITextFieldDelegate的所有方法都是可选的,因此接口文件中的协议引用或委托方法签名拼写错误不应该是问题,它看起来更像是内存问题。这就是问题所在。没有消息,只是僵住了。我得到的只是显示最后几行的线程1的跟踪:0 objc_msgSend 1-[UITextField canBecomeFirstResponder]2-[UIResponder becomeFirstResponder]3-[uideteractionassistant setfirstresponderif]似乎添加的视图不是第一响应程序。我试图在viewDidLoad中强制[self.view成为第一响应者],但仍然是一样的。如果我将UITextField与委托断开链接,它不会崩溃,但我无法隐藏键盘等…您可能在委托方法的某个位置创建了一个无限循环,请尝试对所有方法进行注释。如果问题仍然存在,您需要检查InterfaceBuilder连接,它足够智能,不允许您将UITextField outlet链接到其他类型的outlet,但您可能在创建连接后手动更改了outlet类。或者您是否在代码中手动设置了此插座?它不起作用。我很久以前就遇到过这个问题,我必须将ClassB中的视图和方法包含到ClassA中,并将其隐藏起来,直到需要为止。这对我来说似乎很乱。处理这个问题一定非常非常容易,但我遗漏了一些明显的东西。是的!。这就成功了。似乎很明显。。。现在:我不明白为什么会发生这种事。视图未卸载,也未从屏幕中删除:|谢谢大家的回答。视图将保留在添加到其他视图时,第二个视图控制器(也是textView代理)不会保留任何内容。因此,发生的情况是viewController被解除分配-它释放了它的出口,但它们在视图的堆栈中保留它们,这就是视图不被解除分配的方式,但视图控制器作为代理被解除分配。当您将viewController的view it显示为模态时,控制器将被保留,并且不会解除分配。希望现在清楚了。非常感谢你的解释,A-Live。现在清楚了D