2011-10-06 101 views
0

我在视图中有多个UITextFields。如何判断哪个UITextField刚刚触发了textFieldShouldReturn回调?

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

问题 - 然而,在“textFieldShouldReturn”中,我该如何判断哪个UITextField触发了这个?

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

PS如果有一个更好的办法,还是有办法一种“结合”的方法,我很想念我很想

回答

5

...或者你可以跳过所有的标签,让您的UITextViews实例瓦尔并做:

- (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... 

我有点喜欢这种方式,但其他答案也可以。

+0

这是如何完成的。 “接受”的答案太复杂了。 – Jim

+0

只是为了与我的两分钱...我认为额外的iVar内存使用量是最小的,因为我们只是持有指针的几个字节,并没有真正复制UITextField对象。如果是对象本身,我可能会以不同的方式进行编码。 –

+0

发布文本字段不一定会释放它们。事实上,当你将它们添加到视图中时,它们会被保留,并且它们不会被释放。如果它们已被释放,那么textFieldShouldReturn方法将永远不会被引用到释放的文本字段。理查德建议有一些指针“挂在”作为属性。这与在内存中拥有完整的对象实例有很大不同,无论如何你将拥有这些实例。 – Jim

相关问题