1

私のユーティリティ アプリは、別のアプリでテキスト編集操作を実行します。ユーザーが NSPanel でパラメーターを設定して [OK] をクリックすると、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
     }
}
4

2 に答える 2

0

動作中にアプリがハングアップする (およびビーチ ボールが発生する) ことを意図していない限り、作業を小さなチャンクに分割し、一度にチャンクを処理する必要があります。-performSelector:afterDelay:0 を使用して、次に実行するチャンクをスケジュールできます。

動作中にすべてをブロックするつもりなら、runloop を自分で再入可能に実行することを検討する必要があります。少し掘り下げる必要があるかもしれませんが、ランループのドキュメントにはさらに情報が含まれているはずです。

于 2013-05-03T00:11:56.380 に答える