2015-11-29 42 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

相关问题