Я сузил его до функции наведения. iPadOS 26 не дал сбоя.
Это все в проекте Spritekit, поэтому в skScene.
Когда пользователь наводит курсор на пустое пространство, наведение также срабатывает в фоновом режиме, и он может нормально нажимать.
Но когда пользователь наводит курсор на объект или кнопку, он подсвечивает их, как и предполагалось. Однако, когда он затем нажимает на эти объекты, приложение вылетает с сообщением ниже.
Раньше в прошлом году все работало нормально.
Если пользователи отключают «эффекты наведения» в настройках карандаша, сбоя не происходит.
Ошибка утверждения в -[UIPencilInteraction
/>_handleHoverGestureRecouncer:], UIPencilInteraction.m:895
Завершение работы приложения из-за неперехваченного исключения
'NSInternalInconsistencyException', причина: '-[UIPencilInteraction
_handleHoverGestureRecouncer:]: получены обновления от неизвестного распознавателя жестов наведения: '
Используемый код:
Код: Выделить всё
var pencTapGesture = UIPencilInteraction()
var pencHoverGesture = UIHoverGestureRecognizer.init(target: self, action: #selector(self.hoverFunc(sender:)))
pencHoverGesture.delegate = self
pencTapGesture.delegate = self
self.view?.addGestureRecognizer(pencHoverGesture)
self.view?.addInteraction(pencTapGesture)
Код: Выделить всё
@objc func hoverFunc(sender: UIHoverGestureRecognizer) {
if #available(iOS 16.1, *) {
if sender.state == .began || sender.state == .changed {
//Some code
} else {}
} else {
//Not available for older OS
}
//Normal touches detected using tapgestureRecognizer not touchesbegan
@objc func tapFunc(sender: UITapGestureRecognizer) {
//Some code
//Still called before the crash.
}
//Function being used to detect double taps on the pencil side still works:
@available(iOS 17.5, *)
func pencilInteraction(_ interaction: UIPencilInteraction, didReceiveTap tap: UIPencilInteraction.Tap) {
let preferredAction = UIPencilInteraction.preferredTapAction
// Respect the systemwide preferred action to ignore double taps.
guard preferredAction != .ignore else { return }
}
Нажатие — это просто обычное касание, как если бы использовалось палец. Кстати, при использовании пальцев приложение не аварийно завершает работу, поэтому оно полностью связано с наведением курсора, которое активирует карандаш.
Я также включаю/выключаю эти .enabled или удаляю их всякий раз, когда игра приостанавливается, уходит и т. д.
ИИ предлагает мне прекратить использовать эти методы и перейти к подходу с центром уведомлений. Поскольку раньше все работало нормально, я хотел бы сначала посмотреть, можно ли найти эту ошибку.
Подробнее здесь: https://stackoverflow.com/questions/797 ... 0-1-update
Мобильная версия