Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 迅捷:can';t向下拖动以关闭UIImagePickerController_Ios_Swift_Swiftui - Fatal编程技术网

Ios 迅捷:can';t向下拖动以关闭UIImagePickerController

Ios 迅捷:can';t向下拖动以关闭UIImagePickerController,ios,swift,swiftui,Ios,Swift,Swiftui,我正在使用下面的代码显示默认的UIImagePickerController,但是IOS13的下拉关闭手势似乎不适用于包装在SwiftUI视图中的UIImagePickerController,用户仍然可以点击默认的Cancel选项卡栏项来解除选择器,代码: struct ContentView: View { @State private var showModal = false var body: some View { Text("Tap To show

我正在使用下面的代码显示默认的
UIImagePickerController
,但是
IOS13
的下拉关闭手势似乎不适用于包装在
SwiftUI
视图中的
UIImagePickerController
,用户仍然可以点击默认的
Cancel
选项卡栏项来解除选择器,代码:

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()视图实现它


也许那个人支持它?还没有测试,我试过了,但同样的问题发生了。
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()
  }
}