iPe*_*era 11 nsapplication swift
我创建了NSApplication子类:
class MyApplication: NSApplication {
override func sendEvent(theEvent: NSEvent) {
if theEvent.type == NSEventType.KeyUp && (theEvent.modifierFlags & .CommandKeyMask).rawValue != 0 {
self.keyWindow?.sendEvent(theEvent)
} else {
super.sendEvent(theEvent)
}
}
}
Run Code Online (Sandbox Code Playgroud)
之后,我将Info.plist中的"Principal class"更改为MyApplication,最后在Main.storyboard的Application Scene中,我也将Application更改为MyApplication.
当我运行应用程序时,我得到以下消息:
class MyApplication: NSApplication {
override func sendEvent(theEvent: NSEvent) {
if theEvent.type == NSEventType.KeyUp && (theEvent.modifierFlags & .CommandKeyMask).rawValue != 0 {
self.keyWindow?.sendEvent(theEvent)
} else {
super.sendEvent(theEvent)
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄这个吗?
rin*_*aro 28
尝试:
@objc(MyApplication)
class MyApplication: NSApplication {
Run Code Online (Sandbox Code Playgroud)
或者,您必须像这样设置Info.plist.
<key>NSPrincipalClass</key>
<string>YourAppName.MyApplication</string>
^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
没有关于此的确切文档,但此描述对应:
为了在Objective-C代码中使用Swift类时保留命名空间,Swift类以其完全限定名称暴露给Objective-C运行时.因此,当您使用对Swift类的字符串表示形式进行操作的API时,必须包含该类的完全限定名称.例如,在创建基于文档的Mac应用程序时,可以在应用程序的Info.plist文件中提供NSDocument子类的名称.在Swift中,您必须使用文档子类的全名,包括从应用程序或框架名称派生的模块名称.
与此:
在
@objc(<#name#>)Swift类上使用该属性时,该类在Objective-C中可用,没有任何命名空间.
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |