有效解决Pivot左右误滑问题

Pivot控件在单手操作的时候很容易左右误滑,经过对比系统自带的那些应用发现并不存在该问题

经过一番研究找到一个可行的办法,原理:

拦截ManipulationCompleted事件,判断滑动的X和Y轴的偏移量,据此判断是否应该允许左右滑动即可。

代码大致如下:

Xaml部分:

<controls:PivotItem ManipulationCompleted="PivotItem_ManipulationCompleted">

C#部分:

private void PivotItem_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
        {
            var itemsPresenter = this.Pivot.GetVisualDescendents<ItemsPresenter>(true).FirstOrDefault(); //该扩展方法请自行Google UIExtensionMethod 项目
            var group = itemsPresenter.RenderTransform as TransformGroup;
            var trans = group.Children.FirstOrDefault(o=>o is TranslateTransform) as TranslateTransform;

            var x = Math.Abs(e.TotalManipulation.Translation.X);
            var y = Math.Abs(e.TotalManipulation.Translation.Y);
            if (x / y < 2 && y > 30 && trans.X == 0.0)//此处有效工作,但并不一定最佳,请自行研究搭配最佳的数据
            {
                e.Handled = true;
            }
        }

解释:

刚开始时简单的Y〉X即判定允许滑动,结果还是很频繁的误操作,SO,改成Y必须是X的2倍才允许左右滑动,误操作大大减少,基本没有了,但是新的问题又出来了,当左右滑动一段距离后改为上下滑动并使X/Y<2这时候画面就会停顿在手指放开时的情况,即PivotItem无法归位,经验证只需要判断Pivot控件的左右位移情况即可解决该问题,至此该方案基本完美。

 

抛砖引玉,如果大家有更好的方案不妨一起交流

 

书中圣团队:mohoo studio

posted @ 2011-09-20 22:07  阿干@NET  阅读(2916)  评论(2编辑  收藏  举报