2015-11-29 74 views
0

我試圖通過繼承UITextField來創建位置自動填充文本視圖類,並使用Google Place自動填充API。這很好,但由於實現,我有一個設計錯誤。爲了觀察用戶何時輸入文本,我在自定義子類中設置UITextFieldDelegateself,並跟蹤對textView:shouldChangeTextInRange:replacementText:中輸入文本的更改。這是有效的,但這是設計錯誤:如果有人現在想通過將委託設置爲新的東西來檢查輸入到自定義子類中的內容,那麼我的類的委託不會再設置爲類的對象。現在這個自定義類是沒用的。有沒有辦法讓文本在沒有委託的情況下被輸入,防止委託被更改,或以任何其他方式解決我的問題?獲取UITextView文本而不委託

我有幾種選擇,雖然關於可能的工作,但在一個糟糕的方式:

  • 定期檢查的text屬性是什麼:應該是顯而易見的,爲什麼忙等待是一個愚蠢的想法
  • 覆蓋的委託屬性並將其設置爲私有:不知道這是否會起作用,但如果這樣做,該類不再是UITextField的適當子類,並且在實現我的子類時,所有委託方法都不可用。
  • 爲進一步使用了代表的新的委託:允許某人得到同樣的東西作爲UITextFieldDelegate提供,但它仍然打亂了UITextField

回答

0

代表的文檔和正確執行UIKit中我通常一個到一個連接。這可能會導致您所描述的問題。

如果你想要一個UITextField的多個委託,我會從UITextField派生一個類,例如MYTextField,並向addDelegate和removeDelegate添加一個方法來維護一個委託列表。將MYTextField的委託發送給自己,並將委託方法廣播給委託數組中的所有偵聽器。

本文展示瞭如何維護多個代表的列表的示例代碼。

Delegation to multiple objects

相關問題