xamarin.forms - iOS 14 DatePicker 渲染器

标签 xamarin.forms custom-renderer

我在弄清楚如何正确更新 iOS 上的 DatePicker 现有的自定义渲染器以显示具有不同首选样式的 DatePicker 时遇到了一些困难,如本文中所述(尽管它是针对 swift)https://medium.com/better-programming/introducing-swifts-new-modern-date-picker-37bb5e0a106

我的渲染器如下:

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 code> 而不是做类似的事情:

PreferredDatePickerStyle = UIDatePickerStyle.Wheels;

最佳答案

经过更多研究并浏览 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+");
            }
        }
    }

关于xamarin.forms - iOS 14 DatePicker 渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64827636/

相关文章:

c# - 带圆角的外壳弹出窗口

c# - 应用渲染器时选择器布局发生变化

c# - Xamarin : Segmented Control for windows uwp

mono - 尽管 servicePointManager hack,WebRequest 无法在 Xamarin.Forms 上使用 ssl

xamarin.forms - 将 Lazy<> 与 Prism.DryIoc.Forms 一起使用会产生 "container is garbage collected"异常

android - RecycleView 回收无法正常工作

c# - 渐变作为按钮边框颜色 Xamarin Android?

c# - 在数据模板中绑定(bind)命令 (XF/Prism)

android - AbsoluteLayout 不填满屏幕

c# - Xamarin Forms - 换行按钮文本