我有一个属于UIView子类的重复计时器。
该类有一个加载它的笔尖,我正在使用 ARC。
我想在 UIView 是...
- 已从其超级视图中移除
- 包含其超级视图的视图控制器将从堆栈中弹出。
我似乎在UIView上找不到像viewDidDisappear这样的方法。
还有其他方法可以拦截吗?
目前,在视图控制器弹出后,计时器会继续触发并创建NSLog
输出。
对于弹出的视图控制器:只需使用 viewDidDisappear
或类似。还有一些UINavigationControllerDelegate
可能有用。
对于视图本身:您是否尝试过在UIView
中使用willMoveToSuperview:
方法?我还没有验证这一点,但理论上,当视图从其超级视图中删除时,视图将移动到超级视图nil
。
因此,请在您的视图中尝试以下操作:
- (void)willMoveToSuperview:(UIView *)superview {
if (!superview) {
// cancel timers
}
}
还有一个willRemoveSubview:
方法,但它会在超级视图上调用,而不是删除视图。
您是否尝试过在dealloc
中使其无效