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