using System.ComponentModel; using Bit.iOS.Core.Renderers; using Bit.iOS.Core.Utilities; using UIKit; using Xamarin.Forms; using Xamarin.Forms.Platform.iOS; [assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))] namespace Bit.iOS.Core.Renderers { public class CustomEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (Control != null && e.NewElement is Entry) { Control.ClearButtonMode = UITextFieldViewMode.WhileEditing; UpdateTintColor(); UpdateFontSize(); UpdateKeyboardAppearance(); iOSHelpers.SetBottomBorder(Control); } } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == Entry.FontAttributesProperty.PropertyName || e.PropertyName == Entry.FontFamilyProperty.PropertyName || e.PropertyName == Entry.FontSizeProperty.PropertyName) { UpdateFontSize(); } else if (e.PropertyName == Entry.TextColorProperty.PropertyName) { UpdateTintColor(); } } private void UpdateFontSize() { var pointSize = iOSHelpers.GetAccessibleFont(Element.FontSize); if (pointSize != null) { if (!string.IsNullOrWhiteSpace(Element.FontFamily)) { Control.Font = UIFont.FromName(Element.FontFamily, pointSize.Value); } else { Control.Font = UIFont.FromDescriptor(UIFontDescriptor.PreferredBody, pointSize.Value); } } } private void UpdateTintColor() { Control.TintColor = Element.TextColor.ToUIColor(); } private void UpdateKeyboardAppearance() { if (!ThemeHelpers.LightTheme) { Control.KeyboardAppearance = UIKeyboardAppearance.Dark; } } } }