在iOS上未调用附加的ToolbarHandlerMap器操作

pn9klfpd  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(90)

我想在Android和iOS中自定义工具栏。为此,我抛弃了旧的渲染器,并为ToolbarHandler添加了一个Map器:
在Android中,代码到达并执行(在Platforms.Android.MainApplicationinon.cs中):

[Application]
public class MainApplication : MauiApplication
{
    public MainApplication(IntPtr handle, JniHandleOwnership ownership)
        : base(handle, ownership)
    {
    }

    protected override MauiApp CreateMauiApp() {

        ToolbarHandler.Mapper.AppendToMapping("CustomToolbarMapper", (handler, toolbar) =>
        {
            var materialToolbar = handler.PlatformView;
            materialToolbar.ContentInsetStartWithNavigation = 0;
            materialToolbar.TitleCentered = true;
        });

        return MauiProgram.CreateMauiApp();
    }
}

字符串
在iOS上,附加的Map器操作根本不会被触发(在Platforms.iOS.AppDelegate.cs中):

[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
    protected override MauiApp CreateMauiApp() {

        System.Diagnostics.Debug.WriteLine("IN CREATE MAUI APP iOS");

        ToolbarHandler.Mapper.AppendToMapping("CustomToolbarMapper2", (handler, toolbar) =>
        {
            // Not reached!!
            System.Diagnostics.Debug.WriteLine("IN TOOLBAR HANDLER");
        });

        return MauiProgram.CreateMauiApp();
    }
}


将自定义Map附加到现有ToolbarHandler.mapper属性中。在iOS上运行项目。预期结果:将调用附加Map器操作中的代码。
当前结果:不调用附加Map器操作中的代码。
链接到公共复制项目库https://github.com/JordiCasas/ToolbarHandlerIssue
这里有一个屏幕截图,证明复制库在Android上工作(注意标题居中):


的数据

nhn9ugyo

nhn9ugyo1#

我可以在我这边复制你的问题。问题是,下面列出的ToolbarHandler在iOS上无法调用,但是可以在Android和Windows上调用。

ToolbarHandler.Mapper.AppendToMapping("CustomToolbarMapper", (handler, toolbar) =>
 {
       // Not reached!!
       System.Diagnostics.Debug.WriteLine("IN TOOLBAR HANDLER");
 });

字符串
作为替代解决方案,您可以尝试在iOS上使用Using Custom Renderers in .NET MAUI来实现它。
我注意到你打开了一个新的问题:Appended ToolbarHandler mapper action not called on iOS #16467,你可以在那里跟进。
感谢您的反馈和耐心!

相关问题