1

我想知道为此采取的最佳方法。

示例应用程序是:- 我有一个文本字段和按钮。单击按钮,启动更新文本字段的任务。但是文本字段需要在计时器上(或在后台)更新,比如每 1 秒,但我只需要计时器运行 5 秒,例如填充一段随机文本。

这应该给人的印象是文本框每秒显示随机单词,然后在 5 秒完成后,计时器可以停止并且最后一个值保留在文本框中。

但我也想检测停止事件,然后在文本字段中获取值并执行另一个操作。

最后的问题:-

我应该使用 Timer 事件还是操作和队列?不确定哪种方法最好。

4

3 回答 3

0

是的,以上答案是正确的,只需要根据您的问题进行一些小改动...

  count = 0;

  [NSTimer scheduledTimerWithTimeInterval:1 target:self 
                 selector:@selector(ChangeText) userInfo:nil repeats:YES];

 - (void) ChangeText 
  {
    if (count < 5)
    {
      _textfield.text = [nsstring stringwithformat:@"%@%@", _textfield.text, _yourstring];
    }
    else
    {
      //Start your next event here;
    }
于 2012-11-17T09:22:54.383 回答
0

是的,以这种方式使用计时器,repeats:YES是您所需要的:

[NSTimer scheduledTimerWithTimeInterval:1 target:self 
                     selector:@selector(ChangeText) userInfo:nil repeats:YES];

- (void) ChangeText 
{
  _textfield.text = [nsstring stringwithformat:@"%@%@", _textfield.text, _yourstring];
}
于 2012-11-17T08:12:23.340 回答
0

NSTimer 只能在主线程上工作,那么你不需要期望它会在后台启动时触发。另外我认为这基本上是良好架构的问题 - 你不想尝试处理事件来更新你的文本字段吗?例如,当某些任务完成或显示值发生变化时处理事件,然后使用委托/块/NSNotification 来接收事件并更新 UI。

于 2012-11-17T10:18:07.593 回答