我想知道为此采取的最佳方法。
示例应用程序是:- 我有一个文本字段和按钮。单击按钮,启动更新文本字段的任务。但是文本字段需要在计时器上(或在后台)更新,比如每 1 秒,但我只需要计时器运行 5 秒,例如填充一段随机文本。
这应该给人的印象是文本框每秒显示随机单词,然后在 5 秒完成后,计时器可以停止并且最后一个值保留在文本框中。
但我也想检测停止事件,然后在文本字段中获取值并执行另一个操作。
最后的问题:-
我应该使用 Timer 事件还是操作和队列?不确定哪种方法最好。
我想知道为此采取的最佳方法。
示例应用程序是:- 我有一个文本字段和按钮。单击按钮,启动更新文本字段的任务。但是文本字段需要在计时器上(或在后台)更新,比如每 1 秒,但我只需要计时器运行 5 秒,例如填充一段随机文本。
这应该给人的印象是文本框每秒显示随机单词,然后在 5 秒完成后,计时器可以停止并且最后一个值保留在文本框中。
但我也想检测停止事件,然后在文本字段中获取值并执行另一个操作。
最后的问题:-
我应该使用 Timer 事件还是操作和队列?不确定哪种方法最好。
是的,以上答案是正确的,只需要根据您的问题进行一些小改动...
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;
}
是的,以这种方式使用计时器,repeats:YES
是您所需要的:
[NSTimer scheduledTimerWithTimeInterval:1 target:self
selector:@selector(ChangeText) userInfo:nil repeats:YES];
- (void) ChangeText
{
_textfield.text = [nsstring stringwithformat:@"%@%@", _textfield.text, _yourstring];
}
NSTimer 只能在主线程上工作,那么你不需要期望它会在后台启动时触发。另外我认为这基本上是良好架构的问题 - 你不想尝试处理事件来更新你的文本字段吗?例如,当某些任务完成或显示值发生变化时处理事件,然后使用委托/块/NSNotification 来接收事件并更新 UI。