Windows 8.1存储应用程序中的手势操作确实有问题,我正在构建一个实现两个手势的应用程序:
对于缩放,我使用ManipulationStarted -> ManipulationDelta -> ManipulationCompleted
对于刷卡,我使用PointerPressed -> PointerMoved -> PointerReleased
问题是,当ManipulationStarted在尝试执行PinchToZoom操作时触发时,PointerPressed事件也会触发!因为另一个手势也要表演!
我可以找出最好的方式把这些和手势分开,做手势的最佳实践是什么,我应该缺少一些关于手势机制的东西。
发布于 2014-01-13 18:11:52
您可以使用OnManipulationDelta方法进行缩放和滑动。
XAML
<Canvas >
<Image ManipulationMode='All'
Source='Assets/grapes.png'
Canvas.Top='79'
Canvas.Left='107'>
<Image.RenderTransform>
<CompositeTransform />
</Image.RenderTransform>
</Image>
<Image ManipulationMode='All'
Source='Assets/grapesBW.png'
Canvas.Top='79'
Canvas.Left='461'>
<Image.RenderTransform>
<CompositeTransform />
</Image.RenderTransform>
</Image>
<Rectangle Fill='#7FFFAAAB'
Height='100'
Canvas.Left='107'
Stroke='Black'
Canvas.Top='335'
Width='300' />
<Rectangle Fill='#7F738D01'
Height='100'
Canvas.Left='461'
Stroke='Black'
Canvas.Top='335'
Width='300' />
</Canvas>码
// override the OnManipulationDelta method, instead of setting up event procedures
protected override void OnManipulationDelta(ManipulationDeltaRoutedEventArgs args)
{
// All the Image elements have ManipulationMode = All enabled
// The other elements on the page have manipulations disabled
// therefore the OriginalSource can only be an image, no need to test for null
var currentImage = args.OriginalSource as Image;
var transform = currentImage.RenderTransform as CompositeTransform;
transform.TranslateX += args.Delta.Translation.X;
transform.TranslateY += args.Delta.Translation.Y;
transform.ScaleX *= args.Delta.Scale;
transform.ScaleY *= args.Delta.Scale;
transform.Rotation += args.Delta.Rotation;
base.OnManipulationDelta(args);}
发布于 2014-01-12 07:51:45
由于您没有提供代码,我猜您是如何实现操作事件的。
如果您使用的是GestureRecognizer类,它还可以使用拖放事件处理程序跟踪滑动。
GestureRecognizer知道用户当前表示的手势类型。
https://stackoverflow.com/questions/21034334
复制相似问题