我有一个简单的macruby应用程序,我想通过 NSTextField 获取一些用户输入,但是当我使用 '''macruby test.rb''' 运行应用程序时,聚焦文本字段上的所有输入都会进入狂欢。我需要设置什么才能将输入输入到文本字段中吗?
# test.rb
framework 'AppKit'
application = NSApplication.sharedApplication
frame = [0.0, 0.0, 300, 200]
window = NSWindow.alloc.initWithContentRect(frame,
styleMask: NSTitledWindowMask | NSClosableWindowMask,
backing: NSBackingStoreBuffered,
defer: false)
content_view = NSView.alloc.initWithFrame(frame)
window.contentView = content_view
tf = NSTextField.alloc.initWithFrame([125, 30, 120, 20])
window.contentView.addSubview(tf)
window.display
window.makeKeyAndOrderFront(nil)
application.run
最佳答案
您需要添加以下代码(在 application.run 之前的任何位置):
application.activationPolicy = NSApplicationActivationPolicyRegular
我自己对 MacRuby 还很陌生,但这似乎是必要的,因为非捆绑应用程序的默认激活策略是“NSApplicationActivationPolicyProhibited”。
参见Apple's documentation了解更多详情。
您可能还会发现通过以下方式激活您的应用程序很有用:
application.activateIgnoringOtherApps(true)
如果您使用第二行代码,则值得通读 question 5032203 。如您所知:窃取焦点被认为是不礼貌的,因此如果您曾捆绑应用程序进行分发,则需要删除此行为。
关于nstextfield - 运行macruby时没有输入到NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975325/