包含View Controller的UITextFieldDelegate

时间:2015-01-16 03:16:38

标签: ios objective-c uitextfield uitextfielddelegate uicontainerview

我已在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; } } }

1 个答案:

答案 0 :(得分:0)

  

当我点击键盘返回时,为什么没有调用textFieldShouldReturn?

因为您不是文本字段的代表。反过来,这是因为你过早地设置代表。你在说:

self.ctvc.firstTextField.delegate = self;
self.ctvc.secondTextField.delegate = self;

但是你在prepareForSegue说出来了。那时,ctvc尚未加载其视图,firstTextFieldsecondTextField仍为零。所以你的代码在这里没有效果。