Кажется, что перетаскивание не работает для приложений .Net MAUI на Mac Catalyst, но только на устройствах Apple Silicon. Мне нужно исправление или обходной путь, но пока мне это не удалось.
Я создал нетривиальное B2B-приложение в .Net Maui 8, которое в значительной степени опирается на функцию «перетаскивания» для копирования изображений из списка в 2D-макет. Недавно клиент расширил масштаб проекта, включив в него поддержку MacOS (ранее мы поддерживали iPad и Windows). К сожалению, при запуске приложения на Mac через Mac Catalyst перетаскивание не работает. Когда начинается перетаскивание, в выходных данных отладки отображается следующее сообщение об ошибке:
2024-07-16 06:31:15.674 MacCatalystDragDropTest[1058:13565] Cannot find representation conforming to type com.apple.uikit.private.drag-item
Кажется, что перетаскивание начинается (перетаскиваемый элемент перемещается вместе с указателем мыши, как и ожидалось). Когда я пытаюсь перейти к цели, в выводе отладки появляется следующая ошибка:
2024-07-16 06:31:16.294 MacCatalystDragDropTest[1058:13565] *** Assertion failure in -[NSFilePromiseReceiver receivePromisedFilesAtDestination:options:operationQueue:reader:], NSFilePromiseReceiver.m:349
События/команды на DropGestureRecognizer
цели не срабатывают, и исходный элемент нельзя перетащить снова, пока приложение не будет перезапущено.
Я создал очень простое тестовое приложение, чтобы подтвердить, что проблема не связана с кодом конкретного приложения в основном приложении. Вы можете найти тестовое приложение в этом репозитории. Это стандартное приложение .Net Maui со следующими элементами, добавленными в MainPage.xaml
:
<Image Source = "dotnet_bot.png">
<Image.GestureRecognizers>
<DragGestureRecognizer/>
</Image.GestureRecognizers>
</Image>
<Image Source = "dotnet_bot.png">
<Image.GestureRecognizers>
<DropGestureRecognizer/>
</Image.GestureRecognizers>
</Image>
Этот пример приложения ведет себя идентично моему исходному приложению. Обратите внимание, что такое поведение еще не наблюдалось на компьютерах Intel Mac. Это было подтверждено как минимум на двух устройствах с процессором Apple M2.
Путь вперед! Можете ли вы помочь? Есть ли альтернативный метод работы с собственными представлениями? Что-то мне не хватает с GestureRegonizer
s?
Эта ошибка вызвана управлением Mac через удаленное управление (в моем случае RealVNC Viewer). При подключении оборудования и непосредственном использовании Mac ошибка исчезает. Поддержка удаленного управления не является обязательным требованием для нашего приложения в рабочей среде, поэтому я отмечаю этот вопрос как решенный.