所以我正在寻找一种方式在scrollvIEw的内容更改时被通知.我试图进行子类化,并改变setter for contensize以发送NSNotification:
@implementation UIScrollVIEw (Height)-(voID)setContentSize:(CGSize)contentSize{ _contentSize=contentSize; [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithname:@"scrollVIEwContentSizeChanged" object:nil]];}@end
但是在编译我得到和错误说:
“_OBJC_IVAR_$_UIScrollVIEw._contentSize”,referenced from:
-[UIScrollVIEw(Heigth) setContentSize:] in MyClass.o
ld: symbol(s) not found for architecture armv7
任何想法如何设置器应该被子类?
谢谢 !
解决方法 也许您可以使用键值观察(KVO)来检测内容大小的更改.我没有尝试过,但代码应该如下所示:static int kObservingContentSizeChangesContext;- (voID)startObservingContentSizeChangesInWebVIEw:(UIWebVIEw *)webVIEw { [webVIEw.scrollVIEw addobserver:self forKeyPath:@"contentSize" options:0 context:&kObservingContentSizeChangesContext];}- (voID)stopObservingContentSizeChangesInWebVIEw:(UIWebVIEw *)webVIEw { [webVIEw.scrollVIEw removeObserver:self forKeyPath:@"contentSize" context:&kObservingContentSizeChangesContext];}- (voID)observeValueForKeyPath:(Nsstring *)keyPath ofObject:(ID)object change:(NSDictionary *)change context:(voID *)context { if (context == &kObservingContentSizeChangesContext) { UIScrollVIEw *scrollVIEw = object; NSLog(@"%@ contentSize changed to %@",scrollVIEw,NsstringFromCGSize(scrollVIEw.contentSize)); } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }}
如果不行,可能需要调整setContentSize:方法.方法swizzling允许您的替换方法调用原始方法,这是您需要做的将新内容大小传递到滚动视图.
您可以在这里阅读更多关于方法swizzling的信息:http://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html
我认为这是最流行的代码:https://github.com/rentzsch/jrswizzle
总结以上是内存溢出为你收集整理的ios – 检测对UIWebView的滚动视图的contentSize的更改全部内容,希望文章能够帮你解决ios – 检测对UIWebView的滚动视图的contentSize的更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)