1

我有一个属于 UIView 子类的重复计时器。

该类有一个加载它的笔尖,我正在使用 ARC。

当 UIView 是...时,我想使计时器无效...

  1. 从其超级视图中删除
  2. 包含其 superView 的 ViewController 从堆栈中弹出。

我似乎在 UIView 上找不到像 vi​​ewDidDisappear 这样的方法。

有没有其他方法可以拦截这个?

目前,在 ViewController 弹出后,计时器不断触发并创建NSLog输出。

4

2 回答 2

6

对于弹出的视图控制器:只需使用viewDidDisappear或类似。还有UINavigationControllerDelegate可能有用的。

对于视图本身:您是否尝试过使用willMoveToSuperview:方法 in UIView?我还没有验证这一点,但理论上,当视图nil从其超级视图中删除时,它会移动到超级视图。

因此,请在您的视图中尝试以下操作:

- (void)willMoveToSuperview:(UIView *)superview {
    if (!superview) {
        // cancel timers
    }
}

还有一种willRemoveSubview:方法,但会在超级视图上调用,而不是被删除的视图。

于 2013-02-04T12:01:35.693 回答
0

您是否尝试过在dealloc

于 2013-02-04T12:01:51.247 回答