Xamarin.Mac/NSViewControllerでKeyDownイベントを取りたい

提供: MonoBook
< Xamarin.Mac
2017年10月6日 (金) 05:25時点における162.158.179.205 (トーク)による版 (ページの作成:「Xamarin.MacというかCocoaでKeyDownなどのイベントを処理したい場合は、一般的にはNSViewの派生クラスを作り、それをxibやstoryboardに...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Xamarin.MacというかCocoaでKeyDownなどのイベントを処理したい場合は、一般的にはNSViewの派生クラスを作り、それをxibやstoryboardに貼って、基本的にViewControllerでは何もしない。 これ、ちょっとしたサンプルプログラムなんかでは面倒くさすぎる。

そんなときはNSEvent.AddLocalMonitorForEventsMatchingMaskを使う。

例:NSViewControllerでKeyDownを処理する[編集 | ソースを編集]

    public partial class ViewController : NSViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Do any additional setup after loading the view.

            NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyDown, (theEvent) => {
                Console.WriteLine(theEvent.KeyCode);
                return theEvent; 
            });
        }
    }