protected SlideViewTableCell(string reuseIdentifier) : base(UITableViewCellStyle.Default, reuseIdentifier)
        {
            _lpg = new NodeGestureRecognizer((Action <UIPanGestureRecognizer>)((e) =>
            {
                CGPoint change = e.TranslationInView(this);
                if (e.State == UIGestureRecognizerState.Changed)
                {
                    e.CancelsTouchesInView |= Math.Abs(change.X) > 0;
                    if (OnPresentingDetails != null)
                    {
                        OnPresentingDetails(false, this);
                    }
                    if (TopView != null)
                    {
                        TopView.Frame = new  CGRect(new CGPoint(change.X <= 0 ? change.X : 0, TopView.Frame.Y), TopView.Frame.Size);
                    }
                }
                else if (e.State == UIGestureRecognizerState.Ended)
                {
                    var width      = -TopView.Frame.Width;
                    var presenting = change.X < width / 2;

                    if (OnPresentingDetails != null)
                    {
                        OnPresentingDetails(presenting, this);
                    }

                    var newX = presenting ? width : 0;
                    if (TopView != null)
                    {
                        UIView.Animate(.65d, 0, UIViewAnimationOptions.CurveEaseOut, () =>
                        {
                            TopView.Frame = new CGRect(new CGPoint(newX, TopView.Frame.Y), TopView.Frame.Size);
                        }, null);
                    }
                    e.CancelsTouchesInView = false;
                }
            }));
            _lpg.CancelsTouchesInView = false;
            AddGestureRecognizer(_lpg);
        }
        protected SlideViewTableCell(string reuseIdentifier) : base(UITableViewCellStyle.Default, reuseIdentifier)
        {
            _lpg = new NodeGestureRecognizer((Action<UIPanGestureRecognizer>)((e) =>
            {
                CGPoint change = e.TranslationInView(this);
                if (e.State == UIGestureRecognizerState.Changed)
                {
                    e.CancelsTouchesInView |= Math.Abs(change.X) > 0;
                    if (OnPresentingDetails != null)
                    {
                        OnPresentingDetails(false, this);
                    }
                    if(TopView != null)
                        TopView.Frame = new  CGRect(new CGPoint(change.X <= 0 ? change.X : 0, TopView.Frame.Y), TopView.Frame.Size);
                }
                else if (e.State == UIGestureRecognizerState.Ended)
                {
                    var width = -TopView.Frame.Width;
                    var presenting = change.X < width / 2;

                    if(OnPresentingDetails != null) {
                        OnPresentingDetails(presenting, this);
                    }

                    var newX = presenting ? width : 0;
                    if(TopView != null) {
                        UIView.Animate(.65d, 0, UIViewAnimationOptions.CurveEaseOut, () =>
                        {
                            TopView.Frame = new CGRect(new CGPoint(newX, TopView.Frame.Y), TopView.Frame.Size);
                        }, null);
                    }
                    e.CancelsTouchesInView = false;
                }
            }));
            _lpg.CancelsTouchesInView = false;
            AddGestureRecognizer(_lpg);

        }