2012-08-10 68 views
0

我有一個帶有textfields的customcells的tableview。我現在面臨一個奇怪的問題:如何避免在目標c中的某些情況下額外調用-textFieldDidEndEditing?

  1. 當我點擊第一行文本字段時,-beginEditing被調用。
  2. 現在我改變數值並點擊第二行文本框。所以,第一行的-didEndEditing被調用。在這個didEnd中,我有一些解析方法在其他類中調用。但他們現在不執行。在didEnd之後,調用第二行文本的-beginEditing。之後,解析發生。到現在爲止,沒關係。
  3. 解析完成後,解析對象設置在其他類中,流程應該停在這裏,但我不知道從哪裏和爲什麼,第二行的-didEndEditing被調用!另外,雖然任何resignfirstresponders不是寫在任何地方,鍵盤被解僱!

任何線索爲什麼會發生這種情況,以及如何解決它?

回答

0

這是蘋果設計系統的方式 - 所有的開發人員都必須處理它(對或錯)。關鍵是你得到了「textField」屬性,所以你知道其中一個textField正在發送委託消息。

解決方法是使用一個或多個可變字典(或某些數據結構)爲每個單獨的textField保留狀態。您可以有一個使用textField對象作爲鍵的主字典,然後爲每個textField使用一個具有當前狀態的字典,以及任何其他想要保留的信息。

你可能會破解一個不太優雅但更易於編碼的解決方案。在任何情況下,這些消息都有重疊,無法避免。

編輯:使用標記作爲鍵,或創建一個非保留的NSValue指針對象,但不要使用文本字段本身。

相關問題