【发布时间】:2021-03-05 01:07:17
【问题描述】:
我遇到了一个问题,如果我将 DragGesture 添加到应该作为工作表模式呈现的整个视图,而不是通过拖动来解除工作表的默认行为不起作用。这是我编写的用于演示此错误的示例代码:
private extension UIApplication {
func dismissFirstResponder() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
struct DragGestureExample: View {
var body: some View {
ZStack {
Color.gray
.frame(maxWidth: .infinity, maxHeight: .infinity)
VStack(alignment: .center){
TextField("Type Text Here", text: .constant(""))
.padding()
Spacer()
Text("Hello, World!")
.padding()
}
}
.gesture(
DragGesture()
.onChanged { _ in
UIApplication.shared.dismissFirstResponder()
})
}
}
这是调用视图的 ContentView:
struct ContentView: View {
@State var isShown: Bool = false
var body: some View {
VStack{
Button("Click for sheet") {
self.isShown.toggle()
}
.sheet(isPresented: $isShown) {
DragGestureExample()
}
}
}
}
关闭键盘的拖动手势有效,但它破坏了工作表的默认拖动行为。如果我删除拖动手势,那么我可以拖动以再次关闭工作表。有没有优先考虑工作表的手势?
【问题讨论】:
标签: ios swift xcode swiftui gesture