【问题标题】:NSTimer seems to be invalidated when I use a popOver当我使用 popOver 时,NSTimer 似乎无效
【发布时间】:2013-12-30 18:27:46
【问题描述】:

我有一个 NSTimer 随着时间的推移显示文本。如果同时出现一个 popOver,那么计时器似乎就死了。它调用的方法停止打印日志语句,我的代码绝对不会使其无效。

这是预期的行为吗?当我运行计时器时,我应该永远不要有 popOver 吗?

编辑:“同时”我的意思是,在 NSTimer 被我无效之前(它仍在显示文本),用户触发了一个 popOver,这会阻止 NSTimer 继续。我有一些方法可以使打印日志语句的 NSTimer 无效,并且除了该方法之外,我无处可去。发生 popOver 时不显示日志语句。

这就是我调用 popOver 的方式:

if ([self.popOverController isPopoverVisible]) {
    [self.popOverController dismissPopoverAnimated:YES];
} else {
    SubMenuViewController *popup = [[SubMenuViewController alloc] initWithStorySections:tmp_menu];

    self.popOverController = [[UIPopoverController alloc] initWithContentViewController:popup];
    popup.delegate = self;
    [self.popOverController presentPopoverFromRect:self.textView.frame inView: self.backgroundView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

我不认为我在用它做任何奇怪的线程操作,但它仍然会干扰我的计时器。我确实注意到在触发弹出窗口之前已经调用了计时器,这可以做任何事情吗?

【问题讨论】:

  • 您的viewWillAppearviewWillDisappear 方法中有什么吗?
  • 请出示您的代码……“同时”是什么意思?计时器在哪里创建?
  • 不,我的 viewWillAppear 和 Disappear 都是空的。

标签: ios objective-c nstimer


【解决方案1】:

计时器不应该被弹出框杀死,但它确实取决于弹出框。如果您有一个不调用主运行循环的定制程序,那可能是您的问题。您想确保系统获得时间,以便它可以调用您的计时器调用。否则,在所有调用上设置断点以使计时器无效,并查看是否有人调用了你。

【讨论】:

  • 我有一种方法可以使计时器无效并打印一条日志语句。我的代码中没有其他地方使计时器无效,并且我的日志语句永远不会被调用。我的弹出框是标准弹出框,里面有一个自定义 UIViewController ......我将发布我如何调用弹出框。
  • 啊,我认为计时器是问题所在,但显然我只是错过了日志语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多