Нет ввода в NSTextField при запуске Macruby - PullRequest
2 голосов
/ 07 августа 2011

У меня есть простое приложение 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

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

См. эту ветку в списке рассылки MacRuby.

Чтобы ответить на вопрос, вот код, необходимый для фокусировки вашего приложения при запуске из командной строки:

NSApplication.sharedApplication.activationPolicy = NSApplicationActivationPolicyRegular
NSApplication.sharedApplication.activateIgnoringOtherApps(true)
2 голосов
/ 08 августа 2011

Вам необходимо добавить следующий код (где-нибудь перед application.run):

application.activationPolicy = NSApplicationActivationPolicyRegular

Я сам новичок в MacRuby, но это, кажется, необходимо, потому что политика активации по умолчанию для разделенных приложенийявляется "NSApplicationActivationPolicyProjected".

См. документацию Apple для получения более подробной информации.

Вы также можете найти полезным активировать свое приложение следующим образом:

application.activateIgnoringOtherApps(true) 

Если выиспользуйте эту вторую строку кода, которую стоит прочитать вопрос 5032203 .Как вы знаете: считается невежливым воровать фокус, поэтому вы захотите убрать его, если вы когда-либо связывали свое приложение для распространения.

...