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

提供: MonoBook
移動: 案内検索

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; 
            });
        }
    }