我已在UIViewController
中实施了容器视图,然后在其中放置了UITableViewController
。此表包含包含一对UITextField
的静态行。现在我想检测当用户按下键盘上的返回键时,当其中一个文本字段是第一个响应者时 - 在包含视图控制器而不是表视图控制器中。这是可能的,还是只能知道控制器中存在对象?
我尝试这样做,但未调用textFieldShouldReturn
。我在视图控制器的.h文件中符合UITextFieldDelegate
,我实现了textFieldShouldReturn
,为了设置文本字段的delegate
,我得到{{{}中容器视图的引用1}}然后将这些文本字段的prepareForSegue
设置为delegate
。 (我将它们公开,以便可以在包含的控制器中访问它们。)
self
当我点击键盘上的返回时,为什么没有调用- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"Show Container View"]) {
if ([segue.destinationViewController isKindOfClass:[ContainerTableViewController class]]) {
self.ctvc = segue.destinationViewController;
self.ctvc.firstTextField.delegate = self;
self.ctvc.secondTextField.delegate = self;
}
}
}
?
答案 0 :(得分:0)
当我点击键盘返回时,为什么没有调用textFieldShouldReturn?
因为您不是文本字段的代表。反过来,这是因为你过早地设置代表。你在说:
self.ctvc.firstTextField.delegate = self;
self.ctvc.secondTextField.delegate = self;
但是你在prepareForSegue
说出来了。那时,ctvc
尚未加载其视图,firstTextField
和secondTextField
仍为零。所以你的代码在这里没有效果。