Еще не использовал urhosharp, но вот несколько советов по использованию перетаскивания, не уверен, поможет ли это здесь для вас.
urhosharp : Основные действия
Из документа urhosharp есть некоторые базовые действия, объясняющие, но в них нет перетаскивания. Возможно, вы можете сделать это, комбинируя действия и методы перетаскивания на каждой платформе. Но для этого нужно попробовать.
UWP: ссылка здесь
Вот обзор того, что вам нужно сделать, чтобы включить перетаскивание в вашем приложении:
- Включите перетаскивание элемента, установив для его свойства CanDrag значение
правда.
- Сборка пакета данных. Система обрабатывает изображения и текст
автоматически, но для другого контента вам потребуется обработать
DragStarted и DragCompleted событий и использовать их для создания ваших
собственный пакет данных.
- Включите удаление, установив для свойства AllowDrop значение true для всех
элементы, которые могут получать отброшенное содержимое.
- Обработайте событие DragOver , чтобы система знала, какой тип перетаскивания
операции, которые может получить элемент.
- Обработайте событие Drop для получения отброшенного контента.
Пример кода:
<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: ссылка здесь
С помощью перетаскивания в iOS пользователи могут перетаскивать элементы из одного местоположения на экране в другое, используя непрерывные жесты. Операция перетаскивания может выполняться в одном приложении или может начинаться в одном приложении и заканчиваться в другом.
- Использование элементов перетаскивания для передачи обещаний представления данных между исходным приложением и приложением назначения.
- Использование API-интерфейсов перетаскивания для предоставления элементов для перетаскивания.
- Использование API-интерфейсов отбрасывания для выборочного использования перетаскиваемого содержимого.
- Демонстрирует, как включить перетаскивание для экземпляра UIImageView.
Код примера:
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)
]
}
Вот образец для Xamarin IOS.
Или вы можете использовать UIPanGestureRecognizer в IOS для перемещения представления. Вот Пошаговое руководство. Использование Touch в Xamarin.iOS. Все, что вам нужно сделать, это позволить view.center следовать panGesture для изменить.
Android: ссылка здесь
С помощью платформы перетаскивания Android вы можете разрешить пользователям перемещать данные из одного представления в другое с помощью графического жеста перетаскивания. Каркас включает класс событий перетаскивания, прослушиватели перетаскивания и вспомогательные методы и классы.
В процессе перетаскивания в основном есть четыре шага или состояния:
- Запущено: в ответ на жест пользователя, чтобы начать перетаскивание, ваше приложение вызывает startDrag () , чтобы сообщить системе о начале перетаскивания.
- Продолжение: пользователь продолжает перетаскивание.
- Отброшено: пользователь освобождает тень перетаскивания в ограничивающей рамке представления, которое может принимать данные.
- Завершено: после того как пользователь отпустит тень перетаскивания и после того, как система отправит (при необходимости) событие перетаскивания с типом действия ACTION_DROP , система отправит событие перетаскивания с типом действия ACTION_DRAG_ENDED , чтобы указать, что операция перетаскивания завершена.
Таблица. DragEvent
типы действий:
Или в Android можно использовать onTouchEvent для перемещения вида, необходимо рассчитать положение вида. Пошаговое руководство - Использование Touch в Android
Главное - справиться с нажатием и перемещением двух сообщений, перегружая onTouchEvent . Математические знания (перевод): запишите точку координат, когда ACTION_DOWN , и рассчитайте величину перевода в соответствии с текущей позицией и положением при нажатии на ACTION_MOVE . Обновите элемент управления, заставив его перерисовать, и переместите координаты верхнего левого угла чертежа при перерисовке.
Здесь также обсуждается Drag & Drop в формах Xamarin . Это может быть полезно.