最近项目中需要使用封装TopShowMessage这个控件(类似sina weibo更新提示),这4中提示方式。这种类似是
针对UInavgationBar来提示显示,所有对UIViewController+category 封装还是很合适的。
1)问题:由于把showMessageView直接addsubview在self.view上,所以出现一个滑动跟随的情况,这个还是最好在category里面判断好。如果是scrollview做KVO监听但是在哪里removeObserver呢?,也不可能谁用谁去remove 这也不叫封装了。
解决办法就是:把要封装的单个UIview在category里面 搞个@interface ShowMessageView 然后在这里showView隐藏remove时一并removeobserver就ok(不然在scrollview上一直调用 性能问题歘来)。
这- (void)layoutSubviews{
if ([self.superview isKindOfClass:[UIScrollView class]]) {
UIScrollView *scro = (UIScrollView *)self.superview;
[scro addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
}}
添加对supview的contenoffset监听。
总结:category中kvo问题 可以用变相的办法解决,毕竟它属于封装,用最简单,最明白的方式提供给别人使用!
- (void)showTopMessage:(NSString *)message withType:(ShowType)type;
This link米农码农blog搭建中...