2011-10-06 97 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

相關問題