在我的应用程序中,我在内容页面中添加了自定义控件,并通过单击按钮浏览了该页面。在这种情况下,自定义控件的Draw方法在iOS平台中多次调用(从第二次导航开始)。我添加了重现此问题的代码和简单示例(您可以通过在iOS平台的Draw方法中设置断点来确保)。 请建议我为什么在这种情况下iOS中的draw方法会多次调用,以及如何避免这种情况。
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());
}
请找到完整的示例here