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