繁体   English   中英

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

[英]Invalidate a timer that belongs to a UIView subclass

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

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

我想在UIView为...时使计时器无效...

  1. 从其superview中删除
  2. 包含其superView的ViewController从堆栈中弹出。

我似乎无法在UIView上找到类似viewDidDisappear的方法。

还有其他方法可以拦截这种情况吗?

此刻,在ViewController弹出后,计时器将继续触发并创建NSLog输出。

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

对于视图本身 :您是否尝试过在UIView使用willMoveToSuperview:方法? 我尚未对此进行验证,但是从理论上讲,当将其从超级视图中删除时,视图将变为超级视图nil

因此,请尝试以下方法:

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

还有一个willRemoveSubview:方法,但是该方法将在willRemoveSubview:视图上调用,而不是被删除。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM