2016-01-04 20 views
8

OSXアプリケーションで、ユーザーの画面が使用可能になったときに関数を呼び出すようにしたい、例:コンピュータがスリープ状態から復帰する、またはユーザーが画面をオンにする。基本的には、ユーザーが画面がアクティブでない状態からアクティブ状態になるたびに、私は自分の関数を呼びたいと思います。OSX/Swift:画面が表示されたときに関数を呼び出す

私はこれを行うための最善の方法はにあるのかはわからない:

のために聞きますこれを行う最善の方法のように、または私は完全に他の何かを行うべきですか?スウィフトコードのいくつかの例は、これらのコードを実装しているスニペットがほとんどないと思われるので、本当に役に立ちます。ありがとう。

答えて

3

OS X 10.10.5で画面ロックと画面ロックの通知を受け取ることができました。あなたは異なる技術を持つすべての状況のた​​めのソリューションを得ることができるかどうか、あなたがテストする必要があり、すべての最初の、

NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter]; 
[center addObserver:self selector:@selector(screenIsLocked) name:@"com.apple.screenIsLocked" object:nil]; 
[center addObserver:self selector:@selector(screenIsUnlocked) name:@"com.apple.screenIsUnlocked" object:nil]; 

- (void)screenIsLocked { 
    NSLog(@"screen is locked"); 
} 

- (void)screenIsUnlocked { 
    NSLog(@"screen is unlocked"); 
} 
1

まあ:申し訳ありませんが、私はスウィフトまだので、ここでのObjective-Cだと知りません。ディスプレイをオンにする多くの状況があります(システムの再起動、スリープからの目覚め、接続/切断画面など...)。すべての技術によってすべてがトリガーされているかどうかはわかりません。

ただし、一般的なルールとして、画面がアクティブになった時点を知りたいとします。したがって、画面がアクティブであることを通知する通知を使用します。これはNSWorkspaceScreensDidWakeNotificationです。それが動作する限り、私は常に私が望むものに最も近い技術を使用します。

+0

私はNSWorkspaceScreensDidWakeNotificationで十分であることを望んでいます。あなたが言ったように、私はおそらくディスプレイをオンにするさまざまな状況をすべてテストする必要があります。私はこれらのすべてをキャッチする傘の通知の一種を望んでいましたが、それは1つのように見えません。 – yesthisisjoe

+0

交差点があり、技術の1つが別の交差点を使用する可能性があります。単にそれを確認してください。 (難しいのは、すべての状況を認識するのが難しいからですが、あなたのユーザーはそうします: - ])そして、あなたはすべての通知を受け取ることを望まないかもしれません。 e。システムの起動後に –

関連する問題