Xamarin.Mac/NSViewControllerでKeyDownイベントを取りたい
ナビゲーションに移動
検索に移動
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;
});
}
}