Iphone 如何判断哪个UITextField刚刚触发了textFieldShouldReturn回调?

Iphone 如何判断哪个UITextField刚刚触发了textFieldShouldReturn回调?,iphone,ios,uitextfield,uitextfielddelegate,Iphone,Ios,Uitextfield,Uitextfielddelegate,视图中有多个UITextFields 我假设一旦用户离开UITextField,捕获它的vlue的地方就是实现委托方法“textFieldShouldReturn” 问题-但是,在“textfield shouldlreturn”中,我如何判断哪个UITextField触发了此操作 例如,假设在此阶段,我现在需要使用UITextField现在显示的值更新数据模型,因此需要更新模型中的正确字段,使其与特定UITextField对齐 PS如果有更好的方法,或者有一种我缺少的“绑定”方法,我会感兴趣…

视图中有多个UITextFields

我假设一旦用户离开UITextField,捕获它的vlue的地方就是实现委托方法“textFieldShouldReturn”

问题-但是,在“
textfield shouldlreturn
”中,我如何判断哪个UITextField触发了此操作

例如,假设在此阶段,我现在需要使用UITextField现在显示的值更新数据模型,因此需要更新模型中的正确字段,使其与特定UITextField对齐


PS如果有更好的方法,或者有一种我缺少的“绑定”方法,我会感兴趣

…或者您可以跳过所有标记,将UITextView实例变为变量,然后执行以下操作:

- (void)viewDidLoad {
    myTextView1 = [[UITextView alloc] init];
    myTextView2 = [[UITextView alloc] init];
    myTextView3 = [[UITextView alloc] init];
    myTextView4 = [[UITextView alloc] init];
    ......
}

- (void)textFieldShouldReturn:(UITextField *)textField {
    BOOL shouldReturn = NO;

    if (textField == myTextView1)
    {
        shouldReturn = YES;
    }

    ...and so on...

    }

... release the instance vars in the dealloc...

我有点喜欢这种方式,但另一个答案也可以。

…或者您可以跳过所有标记,将UITextView实例变为变量,然后执行以下操作:

- (void)viewDidLoad {
    myTextView1 = [[UITextView alloc] init];
    myTextView2 = [[UITextView alloc] init];
    myTextView3 = [[UITextView alloc] init];
    myTextView4 = [[UITextView alloc] init];
    ......
}

- (void)textFieldShouldReturn:(UITextField *)textField {
    BOOL shouldReturn = NO;

    if (textField == myTextView1)
    {
        shouldReturn = YES;
    }

    ...and so on...

    }

... release the instance vars in the dealloc...

我有点喜欢这种方式,但另一个答案也会起作用。

这就是它的本意。“被接受”的答案太复杂了。只是为了配合我的两分钱。。。我认为额外的iVar内存使用是最小的,因为我们只保存了几个字节的指针,而没有真正复制UITextField对象。如果是对象本身,我可能会编写不同的代码。释放文本字段不一定会取消分配它们。事实上,当您将它们添加到视图中时,它们会被保留,并且不会被解除分配。如果已解除分配,则永远不会使用对已解除分配文本字段的引用调用textFieldShouldReturn方法。Richard建议将一些指针“挂起”作为属性。这与在内存中存储整个对象实例有很大的不同,不管怎样,内存中都会有整个对象实例,这就是它的目的。“被接受”的答案太复杂了。只是为了配合我的两分钱。。。我认为额外的iVar内存使用是最小的,因为我们只保存了几个字节的指针,而没有真正复制UITextField对象。如果是对象本身,我可能会编写不同的代码。释放文本字段不一定会取消分配它们。事实上,当您将它们添加到视图中时,它们会被保留,并且不会被解除分配。如果已解除分配,则永远不会使用对已解除分配文本字段的引用调用textFieldShouldReturn方法。Richard建议将一些指针“挂起”作为属性。这与在内存中存储整个对象实例有很大不同,不管怎样,您都将拥有整个对象实例。