/// <summary> /// Create and setup a new NSDatePicker /// </summary> /// <param name="pickerStyle"> /// A <see cref="NSDatePickerStyle"/> /// </param> private void setupDatePickerControl(NSDatePickerStyle pickerStyle) { RectangleF frame = new RectangleF(10, 10, 295, 154); shrinkGrowFacter = (int)frame.Size.Height - 30; // create the date picker control if not created already if (datePickerControl == null) { datePickerControl = new NSDatePicker(frame); } datePickerControl.DatePickerStyle = pickerStyle; // set our desired picker style outerBox.AddSubview(datePickerControl); datePickerControl.DrawsBackground = true; datePickerControl.Bordered = false; datePickerControl.Bezeled = true; datePickerControl.Enabled = true; datePickerControl.TextColor = textColorWell.Color; datePickerControl.BackgroundColor = backColorWell.Color; // always set the date/time to TODAY datePickerControl.DateValue = DateTime.Now; datePickerControl.NeedsDisplay = true; updateControls(); // force update of all UI elements and the picker itself // synch the picker style popup with the new style change pickerStylePopup.SelectItemWithTag((int)pickerStyle); // we want to be the cell's delegate to catch date validation datePickerControl.WeakDelegate = this; // or we can set us as the delegate to its cell like so: // datePickerControl.Cell.WeakDelegate = this; // we want to respond to date/time changes datePickerControl.Action = new MonoMac.ObjCRuntime.Selector("datePickerAction:"); }
/// <summary> /// User chose a different picker style from the Picker Style popup. /// </summary> /// <param name="sender"> /// A <see cref="NSPopUpButton"/> /// </param> partial void setPickerStyle(NSPopUpButton sender) { int tag = sender.SelectedCell.Tag; if (datePickerControl.DatePickerStyle != (NSDatePickerStyle)tag) { RectangleF windowFrame = this.Window.Frame; RectangleF boxFrame = outerBox.Frame; datePickerControl.Hidden = true; if ((NSDatePickerStyle)tag == NSDatePickerStyle.ClockAndCalendar) { // for this picker style, we need to grow the window to make room for it. SizeF size = windowFrame.Size; size.Height += shrinkGrowFacter; windowFrame.Size = size; PointF origin = windowFrame.Location; origin.Y -= shrinkGrowFacter; windowFrame.Location = origin; size = boxFrame.Size; size.Height += shrinkGrowFacter; boxFrame.Size = size; outerBox.Frame = boxFrame; this.Window.SetFrame(windowFrame, true, true); datePickerControl.DatePickerStyle = NSDatePickerStyle.ClockAndCalendar; // shows these last dateResult1.Hidden = false; dateResult2.Hidden = false; dateResult3.Hidden = false; dateResult4.Hidden = false; } else { NSDatePickerStyle currentPickerStyle = datePickerControl.DatePickerStyle; // shrink the window only if the current style is "clock and calendar" if (currentPickerStyle == NSDatePickerStyle.ClockAndCalendar) { dateResult1.Hidden = true; dateResult2.Hidden = true; dateResult3.Hidden = true; dateResult4.Hidden = true; SizeF size = windowFrame.Size; size.Height -= shrinkGrowFacter; windowFrame.Size = size; PointF origin = windowFrame.Location; origin.Y += shrinkGrowFacter; windowFrame.Location = origin; size = boxFrame.Size; size.Height -= shrinkGrowFacter; boxFrame.Size = size; outerBox.Frame = boxFrame; this.Window.SetFrame(windowFrame, true, true); } // set our desired picker style setupDatePickerControl((NSDatePickerStyle)tag); } datePickerControl.Hidden = false; updateControls(); // force update of all UI elements and the picker itself } }
/// <summary> /// Create and setup a new NSDatePicker /// </summary> /// <param name="pickerStyle"> /// A <see cref="NSDatePickerStyle"/> /// </param> private void setupDatePickerControl (NSDatePickerStyle pickerStyle) { CGRect frame = new CGRect (10, 10, 295, 154); shrinkGrowFacter = (int)frame.Size.Height - 30; // create the date picker control if not created already if (datePickerControl == null) datePickerControl = new NSDatePicker (frame); datePickerControl.DatePickerStyle = pickerStyle; // set our desired picker style outerBox.AddSubview (datePickerControl); datePickerControl.DrawsBackground = true; datePickerControl.Bordered = false; datePickerControl.Bezeled = true; datePickerControl.Enabled = true; datePickerControl.TextColor = textColorWell.Color; datePickerControl.BackgroundColor = backColorWell.Color; // always set the date/time to TODAY datePickerControl.DateValue = (NSDate)DateTime.Now; datePickerControl.NeedsDisplay = true; updateControls (); // force update of all UI elements and the picker itself // synch the picker style popup with the new style change pickerStylePopup.SelectItemWithTag ((int)pickerStyle); // we want to be the cell's delegate to catch date validation datePickerControl.WeakDelegate = this; // or we can set us as the delegate to its cell like so: // datePickerControl.Cell.WeakDelegate = this; // we want to respond to date/time changes datePickerControl.Action = new ObjCRuntime.Selector ("datePickerAction:"); }