【问题标题】:iOS how to find out if a UILabel has changed it's textiOS如何找出UILabel是否更改了它的文本
【发布时间】:2012-02-01 16:18:55
【问题描述】:

刚刚有一个关于 UILabel 类的问题。我知道 UITextField 控件在编辑更改时有一个委托,但我想知道 UILabel 是否有类似的字段。我问的原因是我的应用程序在某些信息发生更改时查询网络并相应地更新它们,我不想在我的更新中硬编码我想要观察的标签的名称只是为了做一个小任务关于它。如果它有一个委托或与之等效的东西,以便我的班级可以监控这些信息,那就太好了。

如果没有,任何建议将不胜感激。

【问题讨论】:

    标签: ios delegates uilabel textchanged


    【解决方案1】:

    当文本发生如下变化时,您可以使用 KVO 查找或执行一些代码:

    [somelabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];
    

    然后像这样监听变化

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    
        NSLog(@"the text changed");
    }
    

    【讨论】:

    • 这对我很有效,谢谢。现在我可以在后台处理所有事情,而无需我进行硬编码检查。
    【解决方案2】:

    如果没有您的代码,UILabel 无法更改其文本,那么为什么会有代表在更改时告诉您?你已经知道了...UITextField 有一个,因为用户可以编辑文本,所以当它改变时你会被告知。

    所以基本上,不,没有委托方法,你甚至不应该需要一个。

    【讨论】:

    • 我基本上将控件列表存储在字典中,根据发送的数据包,我使用它来检查字典以提取控件以更新它。唯一的另一种方法是当我拉出控件时,我会检查以确保控件的名称匹配。我不想做的事情。
    • 但我的意思是,您正在更新标签的文本,对吧?所以你知道它什么时候改变。尽管@Artanis 已经向您展示了一种观察变化的 KVO 方式。
    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多