.Net MAUI在Apple Silicon的Mac Catalyst上拖拽功能故障求助
简而言之——核心问题
.Net MAUI应用在Mac Catalyst上的拖拽(Drag & Drop)功能出现故障,且仅发生在Apple Silicon设备上。急需修复方案或替代方法,目前尚未解决。
问题详情
基于.Net MAUI 8开发的复杂B2B应用,严重依赖拖拽功能将图片从列表复制到二维布局中。近期扩展支持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对应的事件/命令不会触发,且源元素需重启应用后才能再次被拖拽。
复现步骤
创建了极简测试应用确认问题并非主应用特定代码导致,测试应用表现与原应用完全一致。仅在Apple M2处理器设备上出现此问题,Intel Mac未发现异常。
测试应用为标准.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>
开发环境
- 搭载Apple M2处理器的Mac Mini
- macOS Sonoma 14.5(也曾在14.1.1版本测试)
- Xcode 15.4
- .Net SDK 8.0.303(也曾在更早版本中观察到问题)
- .Net MAUI workload 8.0.61/8.0.100
- .Net MAUI版本8.0.70(也曾在8.0.61及更早版本中观察到问题)
已尝试的解决方法
- 创建干净测试应用(如上所述)
- 彻底卸载Mac上的.Net和Mono后重新安装(问题依旧)
- 绕过Gesture Recognizer,直接向原生视图添加UI交互代码(问题仍存在)
- 向微软报告问题(对方确认行为,但后续无回应)
需求
需要可行的解决方向!是否有操作原生视图的替代方法?或是使用GestureRecognizer时遗漏了什么?
内容的提问来源于stack exchange,提问作者Jason Smith
相关产品推荐
相关产品推荐

