我想在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上工作(注意标题居中):
的数据
1条答案
按热度按时间nhn9ugyo1#
我可以在我这边复制你的问题。问题是,下面列出的
ToolbarHandler
在iOS上无法调用,但是可以在Android和Windows上调用。字符串
作为替代解决方案,您可以尝试在iOS上使用Using Custom Renderers in .NET MAUI来实现它。
我注意到你打开了一个新的问题:Appended ToolbarHandler mapper action not called on iOS #16467,你可以在那里跟进。
感谢您的反馈和耐心!