1

ウィンドウレスアプリケーションを作りたい。問題は、いくつかのアラートボックスを表示するフレームワークを使用していて、それらを抑制できないことです(少なくともクラッシュがない場合)。

(info.plistアプリファイルで)1に設定LSBackgroundOnlyしましたが、これは機能しないようです。ここで何かが足りない可能性はありますか(おそらく、設定する必要のある他の設定)?

また、次のカテゴリを作成してみましたNSWindow

  1. 上書きallocallocWithZone:れ、ウィンドウが作成されないようにします。これは一部の状況で機能しますが、モーダルセッションを開始すると例外がスローされます(nilパラメータをに送信するためbeginModalSessionForWindow:)。

  2. NSApplicationを上書きしようbeginModalSessionForWindow:とし、毎回nilを返しましたが、これにより、フレームワークのどこかにEXC_BADACCESSが発生します(runModalSession:またendModalSession:、上書きされましたが、クラッシュはそれらのいずれかが呼び出される前に発生します)。

他のアイデアは大歓迎です。

役立つ場合は、私が使用しているフレームワークはTwain.Frameworkなので、代わりに、すべてのUIをtwainからブロックする方法を知っている人がいる場合(これには、デバイスが接続されていないときに表示されるエラーアラートが含まれます)、共有すると便利です。

4

2 に答える 2

0

私はそれを「ウィンドウレス」にすることができました(一部のウィンドウはまだ表示されていますが、少なくともそれらは表示されず、自動的に閉じられます)。モーダルウィンドウのみを処理しました。これは、これらが私の状況で示されているためです。

  1. NSWindowすべてのウィンドウが非表示になり、キーウィンドウまたはメインウィンドウにならないように、のカテゴリを作成しました。

    -(BOOL)canBecomeKeyWindow{
       [self setOpaque:NO];
       self.alphaValue = 0;
       return NO;
    }
    -(BOOL)canBecomeMainWindow{
       [self setOpaque:NO];
       self.alphaValue = 0;
       return NO;
    }
    
  2. サブクラス化NSApplication

    -(NSInteger)runModalForWindow:(NSWindow *)aWindow{
       return NSCancelButton;
    }
    -(NSModalSession)beginModalSessionForWindow:(NSWindow *)aWindow{
       NSModalSession session = [super beginModalSessionForWindow:aWindow];
       [aWindow performSelector:@selector(close) withObject:nil afterDelay:1];
       return session;
    }
    

しかし、これはあまり役に立ちませんでした。すべての場合runModalForWindow:、ウィンドウの所有者が応答を受け取ったので、良かったです。アプリケーションがスタックした場合、beginModalSessionForWindow:おそらくウィンドウの所有者が受信しなかった特定のイベント(ボタンのクリックなど)を待っていたことが原因です。

于 2012-04-09T07:22:14.473 に答える
0

あなたが何を望んでいるのかは明確ではありません。通常はウィンドウを表示しないが、サードパーティのフレームワークがアラートを表示できるようにするアプリを望んでいますか?または、フレームワークがアラートを表示しないようにして、アプリにウィンドウがまったく表示されないようにする方法を見つけたいと思っていますか?

前者の場合は、おそらくLSUIElementを探しています。これは、いくつかのUI要素を持つことができるアプリですが、DockまたはCommand-Tabアプリケーションスイッチャーには表示されず、メニューバーもありません。

于 2012-04-05T20:01:41.453 に答える