在 Xamarin.Forms 应用的后台使用 NSTextView

Use NSTextView in the background in an Xamarin.Forms app

如何在 Xamarin.Forms 应用程序的后台使用 NSTextView 并为其提供关键事件,以便它的行为(输入明智)就像它是 window 的一部分并且是专注的? 我已经尝试创建一个实例并将所有关键事件提供给它,但这还不够(没有触发任何事件)

_textView = new NSTextView();

//...

public override void DidFinishLaunching(NSNotification notification)
{
    NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyDown, @event =>
    {
        _textView.KeyDown(@event);
        return @event;
    });
    NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyUp, @event =>
    {
        _textView.KeyUp(@event);
        return @event;
    });
    Forms.Init();
    LoadApplication(new App());
    base.DidFinishLaunching(notification);
}

我找到了解决这个问题的方法。

我在 Xamarin.Forms 中创建了一个从 ContentView 派生的 KeyHandlingContentView 和一个实现 INSTextInputClient.

的 Mac 的自定义渲染器

这样就可以将关键事件从自定义渲染器传递到 Xamarin.Forms 控件。