2010-07-19 35 views
0

確定哪個UITextField觸發方法-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField(或任何其他UITextFieldDelegate方法)的最佳方法是什麼?我見過這樣的代碼之前:檢查哪個UITextField正在觸發textFieldShouldBeginEditing調用

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

    if (textField == textFieldCode) { 
     return YES; 
    } 
    return NO; 
} 

但這只是如果我有textFieldCode因爲在我的課伊娃,在這種情況下,我只是初始化幾個UITextField S和將它們放在一個作品表,所以我沒有在課堂上提及他們。

我在想我可以使用hash function併爲類中每個textField存儲哈希值,然後將textField的哈希值與方法調用中所需的哈希值進行比較,但這看起來像是一種破解。

+1

你能更準確地知道你想要做什麼嗎?根據你如何確定應該允許編輯哪個文本字段,可以將當前允許的文本字段存儲在類中,比如說'currentTextField',並與之進行比較。更多的信息將幫助:) – rfunduk 2010-07-19 20:13:10

+0

如果你正在考慮爲textField存儲哈希值,爲什麼不把一個指針數組存儲到實際的UITextFields?似乎沒有任何額外的工作。運行循環的解決方案也很好。 – 2010-07-19 20:15:34

+0

我希望同時有多個文本字段可編輯,所以我不一定會將'currentTextField'設置爲它將會出現的任何一個。儘管這是一個有趣的方法;感謝您的建議。 – unsorted 2010-07-19 20:30:00

回答

3

由於您只有幾個字段,因此您可以爲每個文本字段的標籤屬性分配唯一的編號以啓用識別。

+0

完美,這正是我所需要的。另外,提示未來的SOers:將enum字段添加到頭文件以使其更健壯。 – unsorted 2010-07-19 20:28:39

+0

如果代碼太亂了,還可以將代碼分解以分離實現textFieldDelegate協議的輔助對象。控制器創建並分配爲委託的每個字段的一個幫助對象。您可以使用通知通過更改來更新控制器 – falconcreek 2010-07-20 04:35:47

0

你可以有一個包含所有文本字段的NSArray iVar。 然後只是通過它來查找哪個文本字段發送消息

相關問題