gpt4 book ai didi

ios - 无需委托(delegate)即可获取 UITextView 文本

转载 作者:行者123 更新时间:2023-11-30 13:53:18 26 4
gpt4 key购买 nike

我尝试通过子类化 UITextField 来创建位置自动完成 TextView 类并使用 Google Place Autocomplete API。这很好用,但由于实现我有一个设计错误。为了观察用户何时键入文本,我设置了 UITextFieldDelegateself在自定义子类中并跟踪 textView:shouldChangeTextInRange:replacementText: 中键入的文本的更改。这是可行的,但这里存在设计错误:如果有人现在想要通过将委托(delegate)设置为新的内容来检查自定义子类中输入的内容,则我的类的委托(delegate)不再设置为类本身的对象。现在自定义的类就没用了。有什么方法可以在没有委托(delegate)的情况下获取输入的文本,防止委托(delegate)被更改,或者以任何其他方式解决我的问题?

我认为有一些可行的选择,但效果不好:

  • 定期检查text属性是:应该很明显为什么忙等待是一个愚蠢的想法
  • 覆盖委托(delegate)属性并将其设置为私有(private):不确定这是否有效,但如果有效,该类不再是 UITextField 的正确子类,并且在实现我的子类时,所有委托(delegate)方法都不可用。
  • 提供一个新的委托(delegate)以供进一步使用该委托(delegate):允许某人获得与UITextFieldDelegate相同的东西提供了,但它仍然弄乱了 UITextField 的文档和正确实现

最佳答案

UIKit 中的委托(delegate)通常是一对一连接。这可能会导致您所描述的问题。

如果您想要 UITextField 的多个委托(delegate),我将从 UITextField 派生一个类(例如 MYTextField),并添加一个方法来维护委托(delegate)列表的 addDelegate 和 removeDelegate 。将 MYTextField 的委托(delegate)发送给自身,并将任何委托(delegate)方法广播给委托(delegate)数组中的所有监听器。

这篇文章展示了如何维护多个委托(delegate)列表的示例代码。

Delegation to multiple objects

关于ios - 无需委托(delegate)即可获取 UITextView 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com