gpt4 book ai didi

SwiftUI OnDrop 函数取决于条件

转载 作者:行者123 更新时间:2023-12-04 02:37:22 26 4
gpt4 key购买 nike

我们在 SwiftUI 中为 MacOS 应用程序使用 OnDrop() 函数。它真的很棒。但是,我只想在特殊情况下允许 onDrop 函数。我尝试仅在该条件为真时才在 onDrag 之后执行代码,效果很好。但是,仍然存在不应该可见的拖动动画/鼠标拖动效果。

这是我们正在使用的代码:

.onDrop(of: [“public.file-url”], isTargeted: $userData.shopPopOver) { providers -> Bool in
for provider in providers
{

我可以只在条件下添加 .onDrop 吗?只是为了展示一个例子,这肯定是行不通的:

if (condition)
{
.onDrop(of: [“public.file-url”], isTargeted: $userData.shopPopOver) { providers -> Bool in

提前致谢!

最佳答案

这是可用于描述的用例的自定义修饰符

struct Droppable: ViewModifier {
let condition: Bool
let types: [String]
let tracking: Binding<Bool>?
let action: ([NSItemProvider]) -> Bool

@ViewBuilder
func body(content: Content) -> some View {
if condition {
content.onDrop(of: types, isTargeted: tracking, perform: action)
} else {
content
}
}
}

extension View {
public func acceptDrop(if condition: Bool, of supportedTypes: [String], isTargeted: Binding<Bool>?, perform action: @escaping ([NSItemProvider]) -> Bool) -> some View {
self.modifier(Droppable(condition: condition, types: supportedTypes, tracking: isTargeted, action: action))
}
}

关于SwiftUI OnDrop 函数取决于条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61081111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com