У меня iPad с внешним сенсорным экраном. Я пытаюсь переназначить систему координат внешнего сенсорного экрана на UIWindow
, который там показан.
Я получаю прикосновения к UIViewController
UIWindow
, который отображается на iPad,как будто я касался iPad. Я получаю их с сенсорным типом .stylus
, именно так я могу отличить их от реальных касаний iPad (я покажу разные виды на iPad и на внешнем экране). Я использую следующий код:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touchesOnExternalWindow = touches.filter({ $0.type == .stylus })
let touchesOnIpad = touches.subtracting(touchesOnExternalWindow)
if !touchesOnIpad.isEmpty {
super.touchesBegan(touchesOnIpad, with: event)
}
if !touchesOnExternalWindow.isEmpty {
guard let externalWindow = UIApplication.shared.windows.first(where: { $0.screen.bounds == screenBounds }) else {
fatalError("Touching the external display without an external display is not supported!")
}
externalWindow.rootViewController?.view.touchesBegan(touchesOnExternalWindow, with: event)
}
}
Я пытаюсь передать прикосновения ко второму UIWindow
, как если бы я касался там. Но, похоже, это не сработает.
Как программно коснуться вида? Сейчас я тестирую с кнопкой на втором экране, но она должна работать и с представлениями SceneKit.