private void OnTouchAction(object sender, TouchActionEventArgs args)
        {
            if (args.Type == TouchActionType.Entered)
            {
                IsMouseOver = true;
            }
            else if (args.Type == TouchActionType.Exited)
            {
                IsPressed   = false;
                IsMouseOver = false;
            }
            else if (args.Type == TouchActionType.Pressed)
            {
                IsPressed = true;
            }
            else if (args.Type == TouchActionType.Released && IsPressed)
            {
                IsPressed = false;

                IsToggled = !IsToggled;

                IsToggledChanged?.Invoke(this, IsToggled);

                ToggledCommand?.Execute(null);
            }
        }
        public SettingsSwitch()
        {
            InitializeComponent();

            var tapGestureRecognizer = new TapGestureRecognizer()
            {
                Command = new Command(() =>
                {
                    if (_isToggling == false)
                    {
                        IsToggled = !IsToggled;
                        IsToggledChanged?.Invoke(this, IsToggled);
                    }
                }),
            };

            GestureRecognizers.Add(tapGestureRecognizer);

            UpdateTogglePosition(false).SafeFireAndForget();
        }
 public void SendIsToggledChanged()
 {
     IsToggledChanged?.Invoke(this, EventArgs.Empty);
 }