使属于 UIView 子类的计时器失效



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

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

我想在 UIView 是...

  1. 已从其超级视图中移除
  2. 包含其超级视图的视图控制器将从堆栈中弹出。

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

还有其他方法可以拦截吗?

目前,在视图控制器弹出后,计时器会继续触发并创建NSLog输出。

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

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

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

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

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

您是否尝试过在dealloc中使其无效

最新更新