【发布时间】:2015-11-29 17:56:43
【问题描述】:
我尝试通过子类化 UITextField 并使用 Google Place Autocomplete API 来创建位置自动完成文本视图类。这很好用,但由于实施,我有一个设计错误。为了观察用户何时键入文本,我在自定义子类中将UITextFieldDelegate 设置为self,并跟踪textView:shouldChangeTextInRange:replacementText: 中键入文本的更改。这可行,但这是设计错误:如果有人现在想通过将委托设置为新的东西来检查自定义子类中输入的内容,那么我的类的委托不再设置为类本身的对象。现在自定义类没用了。有没有办法在没有委托的情况下获取文本,防止委托被更改,或者以任何其他方式解决我的问题?
虽然我有几个选项可能会奏效,但效果不佳:
- 定期检查
text属性是什么:应该很明显为什么忙等待是一个愚蠢的想法 - 覆盖委托属性并将其设置为私有:不确定这是否有效,但如果有效,则该类不再是 UITextField 的正确子类,并且在实现我的子类时所有委托方法都不可用。
- 提供一个新的委托以供进一步使用委托:允许某人获得与
UITextFieldDelegate提供的相同的东西,但它仍然会弄乱UITextField的文档和正确实现
【问题讨论】:
标签: ios swift delegates uitextfield uitextfielddelegate