Я новичок в разработке приложений для экосистемы Apple. В настоящее время я работаю над приложением VisionOS, и мне бы хотелось, чтобы объекты модели выделялись при фокусировке на глазах и возвращались в нормальное состояние, когда они не в фокусе, что-то вроде 3D-кнопки. Последнее, что я хочу реализовать, это то, что при фокусировке/расфокусировке я хочу, чтобы он также вызывал некоторые функции.
Мне удалось выделить отдельный объект в фокусе, однако действие обратного вызова при фокусе/несфокусировании еще предстоит решить.
Следующий код — моя попытка решить проблему:
var body: some View {
ZStack {
RealityView { content in
// Loop through LightIDs enum and create model entities
for lightID in LightIDs.allCases {
let model = ModelEntity(
mesh: .generateSphere(radius: uniformedScale),
materials: [SimpleMaterial(color: .red, isMetallic: false)]
)
let x = Float.random(in: -1.0 ... 1.0)
model.position = SIMD3(x, 1.0, -2.0)
model.name = lightID.rawValue
model.components.set(InputTargetComponent())
model.components.set(HoverEffectComponent())
model.components.set(CollisionComponent(shapes: [.generateSphere(radius: uniformedScale)]))
content.add(model)
// model.onHover { hover in <-- error ModelEntity has no member onHover
// if hover {
// print("Mouse hover: \(model.name)")
// // do something else here
// }
// }
}
}
}
}
Если кто-нибудь имеет какое-либо представление по этому вопросу, мы будем очень признательны.





Вы не можете выполнить действие, когда пользователь «наводит курсор» на элемент пользовательского интерфейса (смотрит на него), поскольку информация отслеживания глаз недоступна приложениям. Из Обзор конфиденциальности Apple Vision Pro:
Информация о том, куда вы смотрите, не передается приложениям, поскольку контент, который мы просматриваем, и то, как долго мы смотрим на это, может раскрыть наш мыслительный процесс. VisionOS обрабатывает глаза движения на системном уровне и не сообщает, куда вы смотрите, или ваши зрительный ввод с помощью приложений или веб-сайтов, прежде чем вы начнете работать с контентом. Как результат, приложения и веб-сайты знают, какой контент вы выбираете, только когда вы касаетесь пальцами вместе, а не то, на что вы смотрите, но не выбираете.
И:
Как приложения реагируют на то, куда вы смотрите
Мы знаем, что вам важно знать, какой контент вы собираетесь нажать прежде чем нажать. В результате вы можете сказать, что собираетесь выбрать в Apple. Vision Pro, не сообщая приложениям, куда вы смотрите.
VisionOS автоматически выделяет кнопки, на которые вы смотрите, без приложения разработчикам нужно знать, куда вы смотрите. Например, если вы смотрите на кнопку в приложении, VisionOS может предоставить некоторую визуальную индикацию, например, сделать кнопка светится. Только когда вы выбираете кнопку, глядя на нее и нажимая ваши пальцы вместе, то, куда вы смотрите, будет передано в приложение. Визуальные эффекты, реагирующие на то, куда вы смотрите, например светящаяся кнопка, визуализируется вне процесса из приложения. В результате приложения, которые вы используете, не рендеринг эффектов, которые вы видите, когда смотрите на контент — VisionOS визуализирует их анимации, потому что приложения, которые вы используете, не знают, на что вы смотрите, пока вы делаете выбор.
Не можете, VisionOS не позволяет разработчикам знать, на что смотрит пользователь.