В iOS пользовательский элемент управления Draw метод вызывается несколько раз при навигации по одной и той же странице в Xamarin.Forms - PullRequest
0 голосов
/ 05 февраля 2019

В моем приложении я добавил пользовательский элемент управления на странице содержимого и перемещался по этой же странице нажатием кнопки.В этом случае пользовательский элемент управления Draw вызывается несколько раз на платформе iOS (со второго раза навигации).Я добавил код и простой пример, которые воспроизводят эту проблему (вы можете убедиться, установив точку останова в методе Draw на платформе iOS).Пожалуйста, предложите мне, почему метод рисования в iOS вызывается несколько раз в этом сценарии и как этого избежать.

public class CustomView : View
{

}
[assembly: ExportRenderer(typeof(CustomView), typeof(CustomRenderer))]
namespace NavigationTest.iOS
{
public class CustomRenderer : ViewRenderer<CustomView, NativeView>
{
    protected override void OnElementChanged(ElementChangedEventArgs<CustomView> e)
    {
        base.OnElementChanged(e);
        if(e.NewElement != null)
        {
            var nativeView = new NativeView();
            SetNativeControl(nativeView);
        }
    }
    public static new void Init()
    {
        new CustomRenderer();
    }

}
public class NativeView : UITextView
{
    public NativeView() : base()
    {
        this.BackgroundColor = UIColor.Clear;
    }

    public override void Draw(CGRect rect)
    {
        base.Draw(rect);
    }
}


<StackLayout>
    <Button BackgroundColor="AliceBlue" Text="Working Example" Clicked="Button_Clicked" Margin="20" />
    <local:CustomView />
</StackLayout>
private void Button_Clicked(object sender, EventArgs e)
    {
        Navigation.PushAsync(new MainPage());
    }

Пожалуйста, найдите полный образец здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...