2012-02-17 39 views
2

我有一個多視圖的過程,用戶輸入數據,我將它保存到模型類屬性的每一步。textFieldDidEndEditing「太晚了」

我用textFieldDidEndEditing來檢查輸入是否有效,如果是,保存輸入的數據。

在視圖上,我有一個continueButtonClicked事件,檢查是否所有的驗證通過,如果是的話加載下一個視圖。我不在這裏設置模型的屬性,因爲我認爲我不應該因爲每個字段一次保存到模型1字段。但是,我注意到了一些問題。

如果用戶位於文本框內並單擊「繼續」按鈕,continueButtonClicked事件將在觸發textFieldDidEndEditing之前觸發。最後發生的事情是,在textFieldDidEndEditing發生保存之前,下一個視圖將填入「舊」模型。

我錯過了什麼?繼續設置所有屬性是否合適?如果我是爲網絡編程,那麼我會這樣做,但對於本機應用程序來說這似乎不太合適。

回答

1

你可以試試這個,看看是否可以解決你的問題?

textFieldShouldEndEditing: 
+0

太棒了!這似乎解決了這個問題。我有點困惑,爲什麼textFieldShouldEndEditing會觸發兩次:在continueButtonClick爲ALL字段之前,並且在continueButtonClick事件觸發後第二次爲活動字段。這似乎是無害的,但只是好奇。 – jaySF 2012-02-17 03:17:30

+0

如果它是你真正想要的活動的那個,你總是可以通過測試是否是第一響應者來確定它。 – mbh 2012-02-17 04:29:45

4

您可以在活動文本框/文本視圖(或全部文本視圖)上調用resignFirstResponder,這將觸發textFieldDidEndEditing

一般來說,對於這樣的文本編輯問題,另一種方法是濫用代理方法,您可以在其中確定輸入的每個字符的新值。如果沒有其他方法,則只應回到此方法。

+0

謝謝。我會研究這種方法,當我得到一些時間 - 只是爲了包裹我的頭。上面的mbh的解決方案剛剛碰巧對我來說更快,但我對此也很好奇 – jaySF 2012-02-17 03:19:06