UiTextField和resignFirstResponder

时间:2009-03-26 05:03:35

标签: iphone uiviewcontroller first-responder

我有一个奇怪的设置。

我有View名为 View1 ViewController来电 viewController1

IB中, View1 ViewController1 的子项。

View1 中,我使用代码UITextField创建并添加为子视图。

在我的Viewcontroller中,我有viewController1 : UIViewController <UITextFieldDelegate>

现在..我想在 View1 中的文本字段获得键盘中的“完成”按钮时重新签名键盘,所以我有

- (BOOL)textFieldShouldReturn:(UITextField *)TEXTFIELD {
    [TEXTFIELD resignFirstResponder];
}

现在的问题是,如何在我的视图中定义的TEXTFIELD(在我的视图控制器中定义)和我在视图中定义的文本字段之间建立连接?

我是否必须在interfaceBuilder中执行某些操作?

也许我完全不在这里......

一些提示非常感谢

2 个答案:

答案 0 :(得分:14)

肯德尔是对的。您需要将viewController1设置为文本字段的委托。

在上面的评论中,我认为你误解了textFieldShouldReturn方法。 UITextField *作为参数传递给此方法,以便委托可以查看要返回的字段,并决定是否允许它。在您的情况下,您只有一个文本字段,所以只需重新签名第一个响应者并返回YES(我的代码在下面)。

尝试在此textFieldShouldReturn函数上放置断点。它被叫了吗?

- (BOOL)textFieldShouldReturn:(UITextField*)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}

答案 1 :(得分:7)

将文本字段的delegate属性连接到IB中的视图控制器(应该是该视图的文件所有者)。还要在视图控制器标题中注明您符合协议。

或者您可以在视图控制器的viewDidLoad方法中将texfield.delegate属性设置为self。