Разрешить взаимодействие пользователя с хост-контроллеромIOS

Программируем под IOS
Ответить
Anonymous
 Разрешить взаимодействие пользователя с хост-контроллером

Сообщение Anonymous »


Я использую хост-контроллер для представления определенных представлений над .sheets и .fullscreencovers. Когда я представляю эти небольшие представления с помощью хост-контроллера, все фоновые представления отключаются. Как я могу сделать так, чтобы и фоновые представления, и представление хост-контроллера обнаруживали взаимодействие с пользователем. В моем случае видео, представленное хост-контроллером, занимает только угол экрана (видео плавает и его можно перетащить в любой угол экрана), видео также можно нажать и затем развернуть на весь экран. Если это невозможно с помощью хост-контроллера, есть ли другой способ представить представление обо всем, включая .sheets и .fullscreencover?
Я попробовал сделать hostingController?.view. isUserInteractionEnabled = false, но тогда это включает взаимодействие с фоном и отключает хост-контроллер.
[img]https://i.stack. imgur.com/Zat6Z.png[/img]

Изображение

[img]https: //i.stack.imgur.com/Zr6d9.png[/img]

Код: Выделить всё

struct SomeView: View {
var body: some View {
ScrollView {
//some content
}
}
}
struct ContentView: View {
var body: some View {
SomeView()
.overlay {
TopVideoView()
}
}
}
struct TopView: View {
var body: some View {
RoundedRectangle(cornerRadius: 10)
.foregroundStyle(.blue).frame(width: 100, height: 100)
}
}
struct TopVideoView: View {
@State private var hostingController: UIHostingController? = nil

func showImage() {
let swiftUIView = TopView()
hostingController = UIHostingController(rootView: swiftUIView)
hostingController?.view.backgroundColor = .clear
hostingController?.view.frame = CGRect(
x: 0,
y: 0,
width: UIScreen.main.bounds.width,
height: UIScreen.main.bounds.height)

if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let window = windowScene.windows.first {
window.addSubview(hostingController!.view)

hostingController?.view.center.x = window.center.x
}
}

func dismissImage() {
hostingController?.view.removeFromSuperview()
hostingController = nil
}

var body: some View {
VStack {}
.onAppear { showImage() }
.onDisappear { dismissImage() }
}
}


Источник: https://stackoverflow.com/questions/781 ... controller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»