.Net MAUI Drag & Drop не работает на Mac Catalyst

TL;DR — Коротко о проблеме

Кажется, что перетаскивание не работает для приложений .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.

Моя среда разработки для Mac

  • Mac Mini с процессором Apple M2
  • MacOS Sonoma 14.5 (также протестировано на 14.1.1)
  • Хкод 15.4
  • .Net SDK 8.0.303 (также наблюдался в более ранней версии)
  • Рабочая нагрузка .Net MAUI 8.0.61/8.0.100
  • .Net MAUI версии 8.0.70 (также наблюдается в 8.0.61 и другой более ранней версии)

Что я пробовал

  • Создайте чистое приложение для тестирования (см. выше).
  • Полностью удалите .Net & Mono с моего Mac и переустановите (те же проблемы, что и раньше)
  • Попытайтесь обойти распознаватели жестов и добавить код взаимодействия с пользовательским интерфейсом непосредственно в собственные представления, следуя этому и этому примеру кода. (Проблема сохраняется)
  • Сообщите о проблеме в Microsoft. (Они подтвердили такое поведение, но затем замолчали).

Что мне нужно

Путь вперед! Можете ли вы помочь? Есть ли альтернативный метод работы с собственными представлениями? Что-то мне не хватает с GestureRegonizers?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ошибка вызвана управлением Mac через удаленное управление (в моем случае RealVNC Viewer). При подключении оборудования и непосредственном использовании Mac ошибка исчезает. Поддержка удаленного управления не является обязательным требованием для нашего приложения в рабочей среде, поэтому я отмечаю этот вопрос как решенный.

Другие вопросы по теме