diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs index 710aa364..39e7ab77 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs @@ -22,6 +22,7 @@ namespace Xamarin.Forms.Platform.iOS { UIDatePicker _picker; UIColor _defaultTextColor; + bool _disposed; IElementController ElementController => Element as IElementController; @@ -29,7 +30,10 @@ namespace Xamarin.Forms.Platform.iOS { base.OnElementChanged(e); - if (e.OldElement == null) + if (e.NewElement == null) + return; + + if (Control == null) { var entry = new NoCaretField { BorderStyle = UITextBorderStyle.RoundedRect }; @@ -55,13 +59,10 @@ namespace Xamarin.Forms.Platform.iOS SetNativeControl(entry); } - if (e.NewElement != null) - { - UpdateDateFromModel(false); - UpdateMaximumDate(); - UpdateMinimumDate(); - UpdateTextColor(); - } + UpdateDateFromModel(false); + UpdateMaximumDate(); + UpdateMinimumDate(); + UpdateTextColor(); } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -120,5 +121,34 @@ namespace Xamarin.Forms.Platform.iOS else Control.TextColor = textColor.ToUIColor(); } + + protected override void Dispose(bool disposing) + { + if (_disposed) + return; + + _disposed = true; + + if (disposing) + { + _defaultTextColor = null; + + if (_picker != null) + { + _picker.RemoveFromSuperview(); + _picker.ValueChanged -= HandleValueChanged; + _picker.Dispose(); + _picker = null; + } + + if (Control != null) + { + Control.EditingDidBegin -= OnStarted; + Control.EditingDidEnd -= OnEnded; + } + } + + base.Dispose(disposing); + } } }
\ No newline at end of file |