Xamarin.Mac/NSViewControllerでKeyDownイベントを取りたい
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;
});
}
}