Пользовательский рендерер не работает в библиотеке iOS +

Я не знаю, почему мой пользовательский рендерер Xamarin.Forms не работает, если я помещаю его в библиотеку и только на iOS, кто-нибудь может мне помочь?

[assembly: ExportRenderer(typeof(HtmlLabel), typeof(HtmlLabelRenderer))]
namespace Plugin.HtmlLabel.iOS
{
    public class HtmlLabelRenderer : LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);

            if (Control == null) return;
            UpdateMaxLines();
            UpdateText();
        }

Он отлично работает на Android, UWP и iOS, если включен в проект.

https://github.com/matteobortolazzo/HtmlLabelPlugin


person Matteo Bortolazzo    schedule 29.05.2017    source источник


Ответы (1)


Добавьте в свой HtmlLabelRenderer класс статический метод Initialize, не выполняющий никаких действий, чтобы гарантировать, что типы средств визуализации загружаются до форм.

Пример:

public static void Initialize()
{
}

Использование:

В вашем AppDelegate before Forms.Init() вызовите метод Initialize:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    Plugin.HtmlLabel.iOS.HtmlLabelRenderer.Initialize();
    global::Xamarin.Forms.Forms.Init();

    LoadApplication(new App());

    return base.FinishedLaunching(app, options);
}
person SushiHangover    schedule 30.05.2017
comment
Спасибо! Это работает :) И я обнаружил еще одну проблему благодаря UWP, PCL отсутствовал. Android работает без него, а iOS и UWP - нет. - person Matteo Bortolazzo; 09.06.2017
comment
Да вам это не нужно на андроиде - person Luca Ziegler; 04.09.2019