1、
在textView的委托法textViewDidChange 只能监听到通过监听到通过键盘输入、删除的内容改变,不能监听到setText,或者myTextView.text=@"Hello",这种内容改变方式,那么如何监听到这种直接赋值引起的 改变呢?这就是下面说的KVC机制。
先给出示例代码:
//注册监听
[mTextView addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];
//处理属性改变事件
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
UITextView *mTextView = object;
NSLog("the textView content is change!!");
}
对kvo/kvc做了简单的介绍
有些术语描述不够精确请指正。
欢迎讨论。
Kvo是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类似Notification,但是notification是需要一个发送notification的对象,一般是notificationCenter,来通知观察者。而kvo是直接通知到观察对象。)
适用kvo时,通常遵循如下流程:
1 注册:
-
(
void