我需要在我的 Xamarin.ios 项目中以编程方式打开一个 UIDatePicker。不幸的是,这是不允许的,也没有公共 api。但是我得到了一些技巧,这些技巧来自 Open UIDatePicker programmatically in iOS 14 我正在尝试实现这个技巧:https://stackoverflow.com/a/65430977/13026962 我设法在我的标签上添加了一个 UIDatePicker。这是我的代码:
lblFromDate.UserInteractionEnabled = false;
var datePicker = new UIDatePicker(new CGRect(x: lblFromDate.Frame.X, y:
lblFromDate.Frame.Y, width: lblFromDate.Frame.Width, height: lblFromDate.Frame.Height));
datePicker.Mode = UIDatePickerMode.Date;
datePicker.ValueChanged += DatePicker_ValueChanged;
Add(datePicker);
但我想以某种方式隐藏日期选择器,但仍然需要它具有交互性,以便在点击标签时(实际上是点击日期选择器),日期选择器动画出来。
第二个问题是我想在点击任何日期时关闭日历模式。但我发现只有价值改变事件。是否可以以编程方式关闭日历模式,对我来说会有很大帮助。这是点击日期选择器后弹出的日历模式:
答案 0 :(得分:3)
对于你的第一个问题: 您可以将日期选择器的 PerferredDatePickerStyle 设置为紧凑,并将日期选择器上的标签颜色设置为白色以覆盖日期选择器。还设置标签的 启用为假。 代码如:
mydatapicker.PerferredDatePickerStyle=UIDatePickerStyle.Compact;
mylabel.BackgroundColor=UIColor.White;
//.....
要更改它的文本,请添加以下代码:
mydatapicker.valuechanged+=Datepicker_Valuechanged;
private void Datepicker_Valuechanged(object sender,EventArgs e)
{mylabel.Text=mydatapicker.Date.ToString();}
你的第二个问题 当点击任何日期时,恐怕没有合适的方法来关闭日历模式。
希望这些对您有所帮助。
1.在storyboard中,设置label的启用为false。
2.点击前
3.点击
4.值改变后
5.代码隐藏