作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 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/
我是一名优秀的程序员,十分优秀!