由于我在我的mac上更新了Xcode 12和VS (2019 8.7.8 build 4),并将Xamarin更新为最新版本(Xamarin.iOS 14.0.0.0),我发现我无法使用UIDatePicker。
查看文档,https://developer.apple.com/documentation/uikit/uidatepicker需要设置样式,可能需要设置preferredDatePickerStyle,但这些属性都不是我可以在(Xamarin)代码中设置的。
有没有人找到了一种方法,可以通过这个方法来选择日期?
发布于 2020-10-09 12:03:40
一旦我们设置了preferredDatePickerStyle和sizeToFit,它就能工作了,下面给出了示例代码。
_datePicker = new UIDatePicker(new CGRect(0, 30, 0, 0));
_datePicker.AutoresizingMask = UIViewAutoresizing.FlexibleRightMargin;
_datePicker.Frame = new CGRect(_datePicker.Frame.Location, new CGSize(300, _datePicker.Frame.Size.Height));
_datePicker.Mode = _datePickerMode;
_datePicker.Date = (NSDate)_defaultDate;
_datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels; //Add this in ios14
_datePicker.SizeToFit(); //Add this in ios14发布于 2020-09-30 10:50:58
我已经解决了这个问题:
_datePicker.SetValueForKey(new NSNumber(1), new NSString("preferredDatePickerStyle"));
它现在正在显示正确的选择器。
发布于 2021-01-12 20:52:32
我基本上将其他答案的所有细节集中到iOS中的Xamarin表单的相应实现中(省略了iOS中CreateNativeControl、OnElementPropertyChanged和自定义方法的实现):
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();
}https://stackoverflow.com/questions/64134481
复制相似问题