选择日期时如何关闭紧凑的 UIDatePicker 弹出窗口?
How to close a compact UIDatePicker popup when choosing a date?
我有一个 UIDatePicker
,其 Preferred Style
设置为 Compact
,我想在用户更改日期后关闭其日历弹出窗口。我试图寻找答案,但找不到任何人谈论它。
如果您确实想要实现它,您需要创建一个自定义选择器。
在 UIViewController 中
UITextField textField;
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
textField = new UITextField(new CGRect(10, 100, 200, 80));
textField.TextColor = UIColor.Red;
textField.BackgroundColor = UIColor.LightGray; // you could set the style as you want
// textField.Delegate = new MyPickerDelegate();
UIDatePicker datePicker = new UIDatePicker();
datePicker.BackgroundColor = UIColor.LightGray;
datePicker.ValueChanged += DatePicker_ValueChanged;
if(UIDevice.CurrentDevice.CheckSystemVersion(14,0))
{
datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Inline;
}
else
{
datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
}
textField.InputView = datePicker;
View.AddSubview(textField);
// Perform any additional setup after loading the view, typically from a nib.
}
private void DatePicker_ValueChanged(object sender, EventArgs e)
{
var picker = sender as UIDatePicker;
var date = picker.Date;
var dateFormatter =new NSDateFormatter();
dateFormatter.DateFormat = "YYYY-MM-dd HH:mm";
var dateString = dateFormatter.ToString(date);
textField.Text = dateString;
textField.ResignFirstResponder();
}
public override void TouchesBegan(NSSet touches, UIEvent evt)
{
base.TouchesBegan(touches, evt);
textField.ResignFirstResponder();
}
我有一个 UIDatePicker
,其 Preferred Style
设置为 Compact
,我想在用户更改日期后关闭其日历弹出窗口。我试图寻找答案,但找不到任何人谈论它。
如果您确实想要实现它,您需要创建一个自定义选择器。
在 UIViewController 中
UITextField textField;
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
textField = new UITextField(new CGRect(10, 100, 200, 80));
textField.TextColor = UIColor.Red;
textField.BackgroundColor = UIColor.LightGray; // you could set the style as you want
// textField.Delegate = new MyPickerDelegate();
UIDatePicker datePicker = new UIDatePicker();
datePicker.BackgroundColor = UIColor.LightGray;
datePicker.ValueChanged += DatePicker_ValueChanged;
if(UIDevice.CurrentDevice.CheckSystemVersion(14,0))
{
datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Inline;
}
else
{
datePicker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
}
textField.InputView = datePicker;
View.AddSubview(textField);
// Perform any additional setup after loading the view, typically from a nib.
}
private void DatePicker_ValueChanged(object sender, EventArgs e)
{
var picker = sender as UIDatePicker;
var date = picker.Date;
var dateFormatter =new NSDateFormatter();
dateFormatter.DateFormat = "YYYY-MM-dd HH:mm";
var dateString = dateFormatter.ToString(date);
textField.Text = dateString;
textField.ResignFirstResponder();
}
public override void TouchesBegan(NSSet touches, UIEvent evt)
{
base.TouchesBegan(touches, evt);
textField.ResignFirstResponder();
}