В моем приложении я добавил пользовательский элемент управления на странице содержимого и перемещался по этой же странице нажатием кнопки.В этом случае пользовательский элемент управления 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());
}
Пожалуйста, найдите полный образец здесь