簡體   English   中英

SwiftUI 拖放錯誤“NSInternalInconsistencyException”

[英]SwiftUI Drag and Drop error “NSInternalInconsistencyException”

我有一個實現本機拖放 api 的 swiftUI 應用程序。 一切正常,但我發現了一個我不明白如何修復的邊緣情況。 本質上,應用程序的整個視圖(設備屏幕的大小)都是放置目標。 當拖動 object 被拖放時,如果用戶將項目移動到屏幕邊緣,應用程序將崩潰並拋出錯誤:

'NSInternalInconsistencyException', reason: UIDragPreviewTarget requires that the container view is in a window, but it is not

我認為這與放置目標有關,並試圖將拖動 object 移出應用程序的 window,但我不知道如何處理這種邊緣情況。

任何幫助將不勝感激

編輯:我注釋掉了.onDrop()修飾符並且崩潰仍然存在。 我只能猜測生成的UIDragPreviewTarget正在內部跟蹤它的位置,但是當它被拉出應用程序的框架時,它會拋出錯誤

在挖掘了更多並創建了一個新的簡化項目以證明這不是 SwiftUI 中的拖放實現中的錯誤之后,我想我找到了問題。

就我而言,我有一個視圖,其中包含我需要的數據,位於我希望能夠將數據拖入的視圖上方。 在拖動過程中,我希望頂視圖自行消失,以便不再阻礙下視圖。 我以兩種方式之一撥動了這個開關。

  1. 當開始對原始數據的拖動過程時,我啟動了一個計時器,它會給你 1.5 秒的時間來取消拖放,然后它才會隱藏視圖。
  2. 當進入下視圖的放置目標時,它會關閉頂視圖

刪除這兩個操作消除了崩潰。

我在這一點上的假設是,隱藏數據的原始來源會破壞 dragItem 的“家”感,當您嘗試將其拖出屏幕時,它也沒有返回的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM