SwiftUI:无法向下拖动以关闭 UIImagePickerController [英] SwiftUI: can't drag-down to dismiss UIImagePickerController
本文介绍了SwiftUI:无法向下拖动以关闭 UIImagePickerController的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用以下代码段来显示默认的 UIImagePickerController
,但似乎 iOS 13
的下拉关闭手势不是'使用 UIImagePickerController
包裹在 SwiftUI
视图中,用户仍然可以点击默认的 Cancel
标签栏项以关闭选择器,代码:
I'm using the following piece of code to show the default UIImagePickerController
, but it seems that the the iOS 13
's drag-down to dismiss gesture isn't working with UIImagePickerController
wrapped in a SwiftUI
view, the user still can hit the default Cancel
tab bar item in order to dismiss the picker, the code:
struct ContentView: View {
@State private var showModal = false
var body: some View {
Text("Tap To show modal")
.padding()
.onTapGesture {
self.showModal.toggle()
}
.sheet(isPresented: $showModal) {
SomeUIKitView()
}
}
}
final class SomeUIKitViewControllerWrapper: UIViewControllerRepresentable {
typealias UIViewControllerType = UIImagePickerController
func makeUIViewController(context: Context) -> UIImagePickerController {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = UIImagePickerController.SourceType.photoLibrary
return imagePicker
}
func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {}
}
struct SomeUIKitView: View {
var body: some View {
SomeUIKitViewControllerWrapper()
}
}
推荐答案
您可以在 SwiftUI 中构建自己的下拉菜单.在您的情况下,您可以尝试为您的 SomeUIKitView() 视图实现它.
You can build your own drag down in SwiftUI. In your case you could try to implement it for your SomeUIKitView() view.
import SwiftUI
struct SwiftUIDragDown: View {
@State private var dragDownTreshhold: CGFloat = 50
@State private var draggedDistance: CGFloat = 0
@State private var dragDownOffsetY: CGFloat = 0
var body: some View {
Text("Drag me")
.offset(x: 0, y: dragDownOffsetY + draggedDistance)
.animation(.easeInOut(duration: 0.3))
.gesture(
DragGesture(minimumDistance: 10)
.onChanged { value in
print("dragged by" , value.translation.height)
self.draggedDistance = value.translation.height
}
.onEnded { _ in
if self.draggedDistance > self.dragDownTreshhold {
self.dragDownOffsetY = 600
} else {
self.draggedDistance = 0
self.dragDownOffsetY = 0
}
}
)
}
}
struct SwiftUIDragDown_Previews: PreviewProvider {
static var previews: some View {
SwiftUIDragDown()
}
}
这篇关于SwiftUI:无法向下拖动以关闭 UIImagePickerController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文