.net 如何在Maui iOS上更改编辑器光标的颜色?

lpwwtiir  于 2023-06-25  发布在  .NET
关注(0)|答案(2)|浏览(174)

如何在Maui iOS应用程序的编辑器控件中更改光标的颜色?

ozxc1zmp

ozxc1zmp1#

虽然渲染器(从另一个答案)仍然工作,你不应该再使用它了。它仅出于与Xamarin.Forms的兼容性原因而存在。
您要做的是创建一个修改Map器。关于如何做到这一点的官方文档可以在here找到。
如果您想对应用中的所有Entry控件执行此操作,可以执行以下操作:

Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("CursorColor", (handler, view) =>
{
#if IOS
    handler.PlatformView.TintColor = UIKit.UIColor.Green;
#endif
});

将其放置在任何你喜欢的地方,在你的应用启动。你的MauiProgram.cs
如果你想为Entry的一个特定示例这样做,你想创建一个继承并在上面的代码中检查。例如,它看起来像这样:

class MyGreenEntry : Entry
{
}

Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("CursorColor", (handler, view) =>
{
#if IOS
    if (view is MyGreenEntry)
    {
        handler.PlatformView.TintColor = UIKit.UIColor.Green;
    }
#endif
});

我在这里创建了一个小示例:https://github.com/jfversluis/MauiCustomCursorColoriOSSample,并在这里的博客文章中写了更多关于它的内容:https://blog.verslu.is/maui/change-cursor-color-maui-ios/

  • 编辑:哎呀,刚刚注意到这是关于编辑器的。所有这些基本上都适用,但请确保使用EditorHandler而不是EntryHandler,当然,如果你只想在一个类型上使用Editor,那就继承Editor。我更新了上面的repo中的示例代码,以包含Editor的代码。
kxe2p93d

kxe2p93d2#

你可以在.NET MAUI中使用Using Custom Renderers来实现它。
下面是详细的步骤:
1.在Project文件夹中创建MyEditor.cs

public class MyEditor : Editor 
{

}

1.在Platform/iOS下创建平台实现文件MyEditorRenderer.cs

[Obsolete] 
public class MyEditorRenderer : EditorRenderer
{
     protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
     {
          base.OnElementChanged(e);

          if (Control != null)
          {
              Control.TintColor = UIColor.Green;
      }

   }
}

1.在MauiProgram.cs中注册我们的处理程序如下:

       .ConfigureMauiHandlers(handlers =>
       {

#if IOS
             handlers.AddHandler(typeof(MyEditor), typeof(MyEditorRenderer));

#endif
       });

1.最后,为编辑器控件创建一个示例,然后运行它进行检查。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MAUIProjectWithRenderer.MainPage"
xmlns:editor="clr-namespace:CustomRenderer"
>

<VerticalStacklayout>
    <editor:MyEditor /> 
</VerticalStacklayout>

</ContentPage>

相关问题