在 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 控件。
如何在 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
.
这样就可以将关键事件从自定义渲染器传递到 Xamarin.Forms 控件。