.Net MAUI 拖放在 Mac Catalyst 上失败

问题描述 投票:0回答:1

TL;DR——问题简而言之

Mac Catalyst 上的 .Net MAUI 应用程序的拖放似乎已损坏,但仅限于 Apple Silicon 设备。我需要修复或解决方法,但到目前为止我还没有成功。

问题详情

我在 .Net Maui 8 中构建了一个重要的 B2B 应用程序,该应用程序严重依赖“拖放”功能将图像从列表复制到 2D 布局。客户最近扩大了项目范围,包括 MacOS 支持(我们之前支持 iPad 和 Windows)。不幸的是,当通过 Mac Catalyst 在 Mac 上运行该应用程序时,拖放功能被破坏。开始拖动时,调试输出中会显示以下错误消息:

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开发环境

  • 配备 Apple M2 处理器的 Mac Mini
  • MacOS Sonoma 14.5(也在 14.1.1 上进行了测试)
  • Xcode 15.4
  • .Net SDK 8.0.303(也在早期版本中观察到)
  • .Net MAUI 工作负载 8.0.61/8.0.100
  • .Net MAUI 版本 8.0.70(也在 8.0.61 和另一个早期版本中观察到)

我尝试过的事情

  • 创建一个干净的应用程序来测试(见上文)
  • 从我的 Mac 上完全卸载 .Net & Mono 并重新安装(与之前的问题相同)
  • 尝试绕过手势识别器并将 UI 交互代码直接添加到以下 thisthis 示例代码之后的本机视图中。 (问题依然存在)
  • 向 Microsoft 报告问题。 (他们确认了这一行为,但随后陷入沉默)。

我需要什么

前进的道路!你能帮忙吗?是否有其他方法可以使用本机视图?我缺少

GestureRegonizer
的东西吗?

c# .net drag-and-drop maui mac-catalyst
1个回答
0
投票

此错误是由通过远程管理(在我的例子中为 RealVNC Viewer)操作 Mac 引起的。当连接硬件并直接操作Mac时,该错误消失。我们的应用程序在生产中不需要远程管理支持,因此我将此问题标记为已解决。

© www.soinside.com 2019 - 2024. All rights reserved.