我的实用程序应用程序在另一个应用上执行文本编辑操作 用户在NSPanel中设置参数并单击“确定”后,NSPanel将关闭并迭代while循环,在目标应用程序中执行必要的文本编辑。
我想为用户提供使用 Command + 。暂停操作的选项。 我不确定如何在循环迭代时检查用户是否按住键。
简化了while循环。
- (IBAction)fileNameTrimAppend:(id)sender {
[self activateTargetApp]; // applescript that brings target app to front
[self openFileRenameDialog]; // applescript to open the file naming dialog
// set variables to use in the loop from the user input
[self close]; // close the input NSPanel
while ([self fileRenameDialogOpen]) { // applescript returns false when editing is done
if (command +"." is held down){ // need help here
return;
}
// text mod is done here.
// paste the mod text into target app field
// move to the next field for editing
}
}
答案 0 :(得分:0)
除非你打算让应用程序挂起(和沙滩球),否则你需要将工作分解成更小的块,并一次处理一个块,让runloop处理两者之间的事件。您可以使用-performSelector:afterDelay:0来安排下一个块运行。
如果你打算在它工作时阻止所有内容,你需要自己重新考虑运行runloop。 runloop文档应该有更多的信息,但你可能需要挖掘一下:http://developer.apple.com/library/mac/#Documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html
答案 1 :(得分:0)
假设这是两个不同的过程,您可以使用addGlobalMonitorForEventsMatchingMask
来观察键盘。
有关类似的讨论,请参阅this link。