9

是否可以为 UILabel 的文本属性更改时设置通知?当我找不到用于 UILabel 的那个时,我尝试了用于 UITextFields 的那个,但它没有用。

 [[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(posttosocial)
 name:UITextFieldTextDidChangeNotification
 object:nowplaying];
4

2 回答 2

23

您可以使用键值观察 (KVO):

[label addObserver:self
        forKeyPath:@"text"
           options:NSKeyValueObservingOptionNew
                 | NSKeyValueObservingOptionOld
           context:NULL];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"text"]) {
        /* etc. */
    }
}
于 2013-01-14T22:02:26.967 回答
0

对于 Swift 3.2+

let observation = label.observe(\UILabel.text, options: [.new, .old]) { label, change in
        print("\(change.newValue as? String ?? "" )")
    }

observation.invalidate()观察完毕就打电话。

于 2019-08-06T09:04:39.630 回答