Cocoa:中断主线程以检查新的键事件?

时间:2015-10-28 12:56:18

标签: objective-c multithreading cocoa

我有一个带搜索字段的基本Cocoa应用程序。当用户键入第一个字母时,将开始搜索,这可能需要一段时间。

用户输入第二个字母后,应立即取消第一个搜索并以新搜索字符串开头。

搜索本身必须在主线程上发生。

有没有办法定期"暂停"在主线程上运行的搜索任务是否让主线程处理任何挂起的键事件?

我尝试添加以下内容,但它不太有用。光标闪烁,但输入的新字母不会显示。

let untilDate = NSDate(timeIntervalSinceNow: 0.25)
while NSRunLoop.currentRunLoop().runMode(NSEventTrackingRunLoopMode, beforeDate: untilDate)
{
    print("did process")
}

PS:另一种解决方案是在第一个字母之后暂停搜索,以查看用户是否要输入更多内容。但是,如果有办法完成上述任务,搜索将更快完成。

0 个答案:

没有答案