0

i want to know how to get notification from Datepicker and timepicker only when user presses done button in Xamarin forms IOS. currently when TimePicker property changed and DatePicker DateSelected is raised when ever picker selected index is changed.

Help me to resolve this problem.

1 Answers1

0

When user press the done button of DatePicker and TimerPicker, the unfocused event will be fired.

For example:

<StackLayout>
    <!-- Place new controls here -->
    <app71:myPicker Unfocused="DatePicker_Unfocused"/>

    <TimePicker Unfocused="TimePicker_Unfocused" />

</StackLayout>

And in .cs:

private void DatePicker_Unfocused(object sender, FocusEventArgs e)
{
    Console.WriteLine("DatePicker_Unfocused");
}

private void TimePicker_Unfocused(object sender, FocusEventArgs e)
{
    Console.WriteLine("TimePicker_Unfocused");
}

You can also handle the click event in the native Xamarin.iOS project using custom renderer, here is an example of DatePicker:

[assembly: ExportRenderer(typeof(myPicker), typeof(MyPickerRenderer))]
namespace App71.iOS
{
    public class MyPickerRenderer : DatePickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var toolbar = (UIToolbar)Control.InputAccessoryView;
                var doneBtn = toolbar.Items[1];

                doneBtn.Clicked -= DoneBtn_Clicked;
            }

            if (e.NewElement != null)
            {
                var toolbar = (UIToolbar)Control.InputAccessoryView;
                var doneBtn = toolbar.Items[1];

                doneBtn.Clicked += DoneBtn_Clicked;
            }
        }

        void DoneBtn_Clicked(object sender, EventArgs e)
        {
            Console.WriteLine("DoneBtn_Clicked");
        }
    }
}

Refer:

how-can-we-handle-the-done-button-click-event-for-a-xamarin-forms-picker

custom-renderer

nevermore
  • 15,432
  • 1
  • 12
  • 30