【问题标题】:iOS 14 DatePicker rendereriOS 14 DatePicker 渲染器
【发布时间】:2021-02-25 20:35:51
【问题描述】:

我在弄清楚如何正确更新我现有的自定义渲染器时遇到了一些困难,我在 iOS 上的 DatePicker 以不同的首选样式显示 DatePicker,如本文所述(尽管它适用于 swift)@987654321 @

我的渲染器如下:

public class BorderlessDatePickerRenderer : DatePickerRenderer
    {
        
        public override void LayoutSubviews()
        {
            base.LayoutSubviews();
            
            
            var element = Element as BorderlessDatePicker;
            Control.BorderStyle = UITextBorderStyle.None;
            if (element.Date.Year == 1900) {
                    Control.Text = "";
            }
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            var element = Element as BorderlessDatePicker;

            if (Control != null && element.Date.Year == 1900) {
                    Control.Text = "";
            }
        }

BorderlessDatePicker 本身只是一个扩展 DatePicker Xamarin.Forms 控件的空类。我的烦恼的根源是我不确定如何在我的 Control 对象上正确设置 PreferredDatePickerStyle,因为 Control 是引擎盖下的 UITextField 而不是 UIDatePicker。本质上,我想做的不是使用似乎是iOS 14默认的compact样式显示日期选择器,而是希望将其显示为wheels,而不是执行以下操作:

PreferredDatePickerStyle = UIDatePickerStyle.Wheels;

【问题讨论】:

    标签: xamarin.forms custom-renderer


    【解决方案1】:

    经过更多研究和浏览 xamarin github,我遇到了这个解决方案:

    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
        {
            base.OnElementChanged(e);
    
            if(e.NewElement != null && this.Control != null)
            {
                try
                {
                    if (UIDevice.CurrentDevice.CheckSystemVersion(14, 0))
                    {
                        UIDatePicker picker = (UIDatePicker)Control.InputView;
                        picker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
                    }
    
                } catch (Exception ex)
                {
                    Log.Error(ex, "Failed to set PreferredDatePickerStyle to be UIDatePickerStyle.Wheels for iOS 14.0+");
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-01-13
      • 2021-02-12
      • 2020-08-30
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      相关资源
      最近更新 更多