gpt4 book ai didi

ios - 具有自定义类属性的 KVO

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:54 26 4
gpt4 key购买 nike

我想在我的应用程序中使用 KVO。我有一个类属性 sizeForScrollView,当这个属性改变时我想要通知。我试过了,但没有用。这是代码:

[self.aSubjectView addObserver:self forKeyPath:@"sizeForScrollView" options:NSKeyValueObservingOptionNew context:NULL];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
self.scrollView.contentSize = CGSizeMake(self.aSubjectView.sizeForScrollView.width, self.aSubjectView.sizeForScrollView.height);
self.aSubjectView.frame = CGRectMake(frameForView.origin.x, frameForView.origin.y, frameForView.size.width, self.aSubjectView.sizeForScrollView.height);
}

最佳答案

添加观察者时self.aSubjectView必须初始化,不能为nil。

在 observeValueForKeyPath 中,您目前只是检查 self.aSubjectView 是否已初始化,但您应该检查一下

if  (object == self.aSubjectView)

尝试

[self.aSubjectView addObserver:self forKeyPath:@"sizeForScrollView" options:NSKeyValueObservingOptionNew context:NULL];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if (object == self.aSubjectView) {
self.scrollView.contentSize = CGSizeMake(self.aSubjectView.sizeForScrollView.width, self.aSubjectView.sizeForScrollView.height);
self.aSubjectView.frame = CGRectMake(frameForView.origin.x, frameForView.origin.y, frameForView.size.width, self.aSubjectView.sizeForScrollView.height);
}
}

关于ios - 具有自定义类属性的 KVO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526013/

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