我已经使用urhosharp为我的xamarin uwp / ios / android项目添加了3d视图对象。唯一有效的事件是触摸事件,但我也想使用拖放操作,以便对象可以移动到3D视图中的不同位置。有什么建议?
https://us.v-cdn.net/5019960/uploads/editor/ni/u16pg79v2m62.png
还没有使用过urhosharp,但这里有一些关于使用拖放的建议,不确定它是否对你有帮助。
urhosharp:gasxswpoi
从urhosharp的文档中,有一些基本的动作解释,但没有拖放。也许你可以通过在每个平台上组合动作和拖动方法来做到这一点。但这需要你尝试。
UWP:Basic Actions
以下概述了在应用中启用拖放操作所需执行的操作:
代码示例:
reference link here
IOS:<Grid AllowDrop="True" DragOver="Grid_DragOver" Drop="Grid_Drop"
Background="LightBlue" Margin="10,10,10,353">
<TextBlock>Drop anywhere in the blue area</TextBlock>
</Grid>
private void Grid_DragOver(object sender, DragEventArgs e)
{
e.AcceptedOperation = DataPackageOperation.Copy;
}
通过iOS中的拖放,用户可以使用连续手势将项目从一个屏幕位置拖动到另一个位置。拖放活动可以在单个应用程序中进行,也可以在一个应用程序中启动,在另一个应用程序中结束。
代码示例:
reference link here
这是Xamarin IOS的func customEnableDragging(on view: UIView, dragInteractionDelegate: UIDragInteractionDelegate) {
let dragInteraction = UIDragInteraction(delegate: dragInteractionDelegate)
view.addInteraction(dragInteraction)
}
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
// Cast to NSString is required for NSItemProviderWriting support.
let stringItemProvider = NSItemProvider(object: "Hello World" as NSString)
return [
UIDragItem(itemProvider: stringItemProvider)
]
}
。
或者你可以在IOS中使用UIPanGestureRecognizer移动视图。这里是sample你需要做的就是让view.center跟随panGesture改变。
Android:Walkthrough: Using Touch in Xamarin.iOS.
使用Android拖放框架,您可以允许用户使用图形拖放手势将数据从一个视图移动到另一个视图。该框架包括拖动事件类,拖动侦听器以及辅助方法和类。
拖放过程中基本上有四个步骤或状态:
表。 reference link here行动类型:DragEvent
或者在Android中可以使用onTouchEvent来移动视图,需要计算view.的位置
主要是处理按下和移动两个消息,重载onTouchEvent。数学知识(翻译):在ACTION_DOWN时记录坐标点,并根据ACTION_MOVE时按下的当前位置和位置计算平移量。刷新控件,使控件重绘,并在重绘时移动图形左上角的坐标。
这里也有关于Walkthrough - Using Touch in Android的讨论。它可能会有所帮助。