【问题标题】:UiTextField and resignFirstResponderUiTextField 和 resignFirstResponder
【发布时间】:2010-10-15 15:16:01
【问题描述】:

我有一个奇怪的设置。

我有一个名为 View1View 和一个名为 viewController1

ViewController

IB 中,View1ViewController1 的子级。

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

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

现在.. 当 View1 中的文本字段在键盘上获得“完成”按钮时,我想退出键盘,所以我有

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

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

我必须在 interfaceBuilder 中做些什么吗?

也许我完全不在这儿了……

非常感谢一些提示

【问题讨论】:

    标签: iphone uiviewcontroller first-responder


    【解决方案1】:

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

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

    尝试在这个 textFieldShouldReturn 函数上放置一个断点。它被调用了吗?

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

    【讨论】:

    • 我一辈子都想不通为什么这对我不起作用。
    • @CVertex 可能是因为您尚未设置 UITextField 委托。
    【解决方案2】:

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

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

    【讨论】:

    • 我现在将 View1 的委托连接到 IB 中的 FileOwner 仍然不起作用:(在方法 (BOOL)textFieldShouldReturn:(UITextField *)returnTextField 中。returnTextField 应该与视图。我只是不知道在哪里可以建立这种联系。
    • 这是代表,这是您唯一可以建立的联系。如前所述,确保视图控制器标头实现 UITextFieldDelegate 协议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多