微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UIDatePicker停止工作Xamarin IOS14

如何解决UIDatePicker停止工作Xamarin IOS14

由于我已在Mac上更新到Xcode 12和VS(2019 8.7.8 build 4),并将Xamarin更新到了最新版本(Xamarin.iOS 14.0.0.0),所以我无法使用UIDatePicker。

DatePicker

查看文档,https://developer.apple.com/documentation/uikit/uidatepicker我需要设置Style,也许还要设置preferredDatePickerStyle,但是这些都不是我可以在(Xamarin)代码中设置的属性

有没有人找到一种方法可以超越此日期以选择日期?

解决方法

一旦我们设置了root.walkDecls(/^--/,(decl) => { //… }); Declaration:,它就会起作用,示例代码如下。

preferredDatePickerStyle
,

我已经解决了这个问题:

_datePicker.SetValueForKey(new NSNumber(1),new NSString("preferredDatePickerStyle"));

现在显示正确的选择器

Date Selector

,

最近我也遇到了这个有趣的问题。当我们使用Xcode 12对其进行打包时,一切正常,但是当切换到Xcode 12及更高版本进行打包日期选择和显示时,它将显得异常。

因为iOS 13.4 UIDatePicker具有新功能

  • @属性(非原子,读写,分配)UIDatePickerStyle preferredDatePickerStyle API_AVAILABLE(ios(13.4))API_UNAVAILABLE(tvos,watchos);

如果要保留原始样式,可以添加此代码

   _datePick = [[UIDatePicker alloc] init];
   if (@available(iOS 13.4,*)) {
       _datePick.preferredDatePickerStyle = UIDatePickerStyleWheels;
   }
,

我基本上是将其他答案的所有细节放在 public class CustomDatePickerRenderer : DatePickerRenderer 中针对 iOS 中 Xamarin Forms 的相应实现中(省略了我对 CreateNativeControlOnElementPropertyChanged 和自定义的实现)为简洁起见的方法):

protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
{
    const int iosVersionMajorForDatePickerStyleFeature = 13;
    const int iosVersionMinorForDatePickerStyleFeature = 4;
    base.OnElementChanged(e);

    if (e.OldElement != null || Element == null)
    {
        return;
    }

    //Switch back to the Wheels style for the datePicker (in iOS 14 the default of Automatic uses the Compact style)
    if (UIDevice.CurrentDevice.CheckSystemVersion(iosVersionMajorForDatePickerStyleFeature,iosVersionMinorForDatePickerStyleFeature)
        && Control?.InputView is UIDatePicker datePicker && datePicker.PreferredDatePickerStyle != UIDatePickerStyle.Wheels)
    {
        datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
        datePicker.SizeToFit();
    }

    //Do whatever other customization is desired
    //UpdateBorderColor();
    //UpdateBorderWidth();
    //UpdateCornerRadius();
    //UpdatePadding();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。