私はウィジェットをサブクラス化とはKeyDownメソッドを定義し、InterfaceBuilderで、私はKeyDownイベントメソッドで定義されたクラスであるウィジェットのクラスを割り当てると、正常に動作するようです。XCodeとIBを使用しないとkeyDownが呼び出されないのはなぜですか?
私は、以下の簡単なスクリプトに示すように、それは、プログラム完成行う場合は、KeyDownイベントのメソッドが呼び出されることは決してありません。どうしてこれなの?
アプリは舞台裏で行われますイベントを待機させているのXCodeによって設定されているものはありますか?それは何ですか、そして私はここでどうやってそれをしますか?正しい方向に私を指差してください。
私は再びアップルのドキュメントを読んでとXCodeのが私のために設定されていることが起こっているイベントハンドラの登録があるかどうかを把握しようとして行くつもりです。しかし、それが何であるか分かっているなら、私に知らせてください。
ありがとうございます!
framework 'Cocoa'
class MyView < NSView
def acceptsFirstResponder
true
end
def keyDown(event)
puts "key down MyView"
end
end
class MyWindow < NSWindow
def acceptsFirstResponder
true
end
def keyDown(event)
puts "key down in MyWin"
end
end
class MyApp < NSApplication
def acceptsFirstResponder
true
end
def keyDown(event)
puts "key down in MyApp"
end
end
application = MyApp.sharedApplication
# create the window
frame = [0.0, 0.0, 300, 200]
mask = NSTitledWindowMask | NSClosableWindowMask
window = MyWindow.alloc.initWithContentRect(frame,
styleMask:mask,
backing:NSBackingStoreBuffered,
defer:false)
# assign a content view instance
content_view = MyView.alloc.initWithFrame(frame)
window.contentView = content_view
window.makeFirstResponder(window)
# show the window
window.display
window.makeKeyAndOrderFront(nil)
application.run
これは機能します。ありがとうございました! – aryeh