在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和File的所有者之间的委托连接,我在@interface声明中添加,并像往常一样编写协议方法(textFieldDidEndEditing,textFieldDidBeginEditing等)。
这应该可以,但是当我触摸文本框时,我得到了一个异常。看起来textfield没有到达它的代表。
但是,如果我使用presentModalViewController呈现视图,一切工作正常。我宁愿不必这样做,因为这些视图是到一个tabViewController,我不想隐藏tabBar时显示。
我希望你明白我想说什么。我的英文不是很好。
完整的异常消息会有帮助。由于UITextFieldDelegate的所有方法都是可选的,因此接口文件中的协议引用或拼写委托方法签名不应该是一个问题,它看起来更像是内存问题。 –
好吧,就是这一点。没有消息,只是冻结。我得到的是线程1的轨迹显示了这些最后一行:0 objc_msgSend 1 - [UITextField canBecomeFirstResponder] 2- [UIResponder becomeFirstResponder] 3 - [UITextInteractionAssistant setFirstResponderIfNecessary]看起来添加的视图不是第一响应者。我试图在viewDidLoad中强制[self.view becomeFirstResponder],但仍然是一样的。如果我将UITextField从委托中解除链接,它不会崩溃,但我无法隐藏键盘等等。 – rmvz3
您可能已在委托方法的某个位置创建了一个无限循环,请尝试对它们进行注释。如果问题仍然存在,则需要检查InterfaceBuilder连接,但不要让您将UITextField插座连接到其他类型插座,但您可能在创建连接后手动更改插座类。或者你是否在代码中手动设置了这个插座? –