[英]How can a UIView subclass get notified when it has been scrolled by its Superview UIScrollView
[英]How to be notified when a UIView detached from its superView?
似乎UIView没有像“ didRemoveFromSuperview
”或“ willRemoveFromSuperview
”这样的方法。那么,当UIView从其superView中删除时如何监听事件?我应该使用KVO? 提前致谢!
这个话题已经很老了,但我找到了一种方法。由于谷歌搜索不够有用,这里是(取自UIView的文档)
观察与视图相关的更改
- didAddSubview:
- willRemoveSubview:
- willMoveToSuperview:
- didMoveToSuperview
- willMoveToWindow:
- didMoveToWindow
这有效(在iOS8上测试):
-(void) didMoveToWindow {
[super didMoveToWindow]; // (does nothing by default)
if (self.window == nil) {
// YOUR CODE FOR WHEN UIVIEW IS REMOVED
}
}
此方法的默认实现不执行任何操作。 子窗口可以覆盖它,以便在窗口更改时执行其他操作。
窗口属性可能是nil ... 当接收器刚刚从其超级视图中移除时或者刚刚将接收器添加到未附加到窗口的超级视图时,会发生这种情况。
您可以将UIView子类化并从中发布通知- (void)removeFromSuperview
方法。
- (void) willMoveToSuperview: (UIView *) newSuperview{
if(newSuperview == nil){
// UIView was removed from superview
} else {
// UIView was added to superview
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.