Swiftアプリケーションの中から、あるアプリケーションから別のアプリケーションに変更する際に、一般的に知りたいことがあります。OSの切り替え監視アプリケーション
たとえば、Google ChromeからXcodeなどの別のアプリケーションに切り替えると、このイベントが発生します。
アプリケーション切り替えイベントを取得する方法はありますか?たとえば、イベントモニターなどですか?
Swiftアプリケーションの中から、あるアプリケーションから別のアプリケーションに変更する際に、一般的に知りたいことがあります。OSの切り替え監視アプリケーション
たとえば、Google ChromeからXcodeなどの別のアプリケーションに切り替えると、このイベントが発生します。
アプリケーション切り替えイベントを取得する方法はありますか?たとえば、イベントモニターなどですか?
NSWorkspaceDidActivateApplicationNotification
のキーを見ると、オブザーバをNSWorkspace.sharedWorkspace().notificationCenter
に追加できます。セレクタをあなたのメソッドの1つに向け、userInfo
辞書から情報を取得します。 AppDelegateで
簡単な例:スウィフト3では
スウィフト2.2
func applicationDidFinishLaunching(notification: NSNotification) {
NSWorkspace.sharedWorkspace().notificationCenter.addObserver(self,
selector: #selector(activated),
name: NSWorkspaceDidActivateApplicationNotification,
object: nil)
}
func activated(notification: NSNotification) {
if let info = notification.userInfo,
app = info[NSWorkspaceApplicationKey],
name = app.localizedName {
print(name)
}
}
スウィフト3
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSWorkspace.shared().notificationCenter.addObserver(self,
selector: #selector(activated(_:)),
name: NSNotification.Name.NSWorkspaceDidActivateApplication,
object: nil)
}
func activated(_ notification: NSNotification) {
if let info = notification.userInfo,
let app = info[NSWorkspaceApplicationKey] as? NSRunningApplication,
let name = app.localizedName
{
print(name)
}
}
あなたは、各オプションの結合のためのキーワードlet
を使用する必要があります。また、実行中のアプリケーションは、userInfo辞書から抽出されたように、タイプがany
であり、さらにNSRunningApplication
タイプにキャストする必要があります。
だから、エリック綾で与えスウィフト3の答えは動作しますが、小さな変更を必要とします:
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSWorkspace.shared().notificationCenter.addObserver(self,
selector: #selector(activated),
name: NSNotification.Name.NSWorkspaceDidActivateApplication,
object: nil)
}
func activated(notification: NSNotification) {
if let info = notification.userInfo,
let app = info[NSWorkspaceApplicationKey] as? NSRunningApplication,
let name = app.localizedName {
print(name)
}
}
(私は受け入れ答えにコメントとしてこのポストを左ではなく、十分な担当者だろう...)
ありがとうございました! –
ようこそ。 :) – Moritz