在 iOS 上未调用附加 ToolbarHandler 映射器操作

问题描述 投票:0回答:1

我想在Android和iOS中自定义工具栏。为此,我扔掉了旧的渲染器并为 ToolbarHandler 附加了一个映射器:

在 Android 中,代码已到达并执行(在 Platforms.Android.MainApplicatinon.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 上,附加的映射器操作根本不会被触发(在 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();
    }
}

重现步骤 将自定义映射附加到现有 ToolbarHandler.Mapper 属性。 在 iOS 上运行该项目。 预期结果: 调用附加映射器操作中的代码。

目前结果: 未调用附加映射器操作中的代码。

公共复制项目存储库的链接 https://github.com/JordiCasas/ToolbarHandlerIssue

ios maui handler
1个回答
0
投票

深入研究您的问题后,无法修改处理程序中的ToolbarItem(.NET MAUI 7)。

原因是,当使用handler时,ToolbarItem已经处于创建状态,但根据ToolbarItem Class文档,ToolbarItem创建后任何更改都将被忽略。请参阅下面备注

工具栏项的属性发生任何更改后 添加的内容将被忽略。

我尝试更改处理程序中 ToolbarItem 的背景,但失败了。

materialToolbar.SetBackgroundColor(Colors.Green.ToPlatform());

我注意到您打开了一个新问题:Appished ToolbarHandler 映射器操作未在 iOS #16467 上调用,您可以在那里跟进。

© www.soinside.com 2019 - 2024. All rights reserved.