Seit dem iPadOS 26.0.1-Update lässt sich die App beim Hovern und Tippen mit dem Stift abstürzenIOS

Programmierung für iOS
Anonymous
 Seit dem iPadOS 26.0.1-Update lässt sich die App beim Hovern und Tippen mit dem Stift abstürzen

Post by Anonymous »

Seit dem Update 26.0.1 stürzt meine App bei Benutzern ab, die den Apple Pencil verwenden.
Ich habe es auf die Hover-Funktion eingegrenzt. iPadOS 26 ist nicht abgestürzt.
Das ist alles in einem Spritekit-Projekt, also in einer skScene.
Wenn der Benutzer mit der Maus über einen leeren Raum fährt, wird das Schweben auch im Hintergrund ausgelöst und er kann problemlos tippen.
Wenn der Benutzer jedoch mit der Maus über ein Objekt oder eine Schaltfläche fährt, werden diese wie beabsichtigt hervorgehoben. Wenn er dann jedoch auf diese Objekte tippt, stürzt das App-Insta mit der folgenden Meldung ab.
Das hat im letzten Jahr alles einwandfrei funktioniert.
Wenn Benutzer „Hover-Effekte“ in den Pencil-Einstellungen deaktivieren, tritt der Absturz nicht auf.

Behauptungsfehler in -[UIPencilInteraction
_handleHoverGestureRecognizer:], UIPencilInteraction.m:895
App wird aufgrund einer nicht erfassten Ausnahme beendet
'NSInternalInconsistencyException', Grund: '-[UIPencilInteraction
_handleHoverGestureRecognizer:]: Aktualisierungen von einem unbekannten Hover-Gestenerkenner erhalten: '

Verwendeter Code:

Code: Select all

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)
Ausgelöste Methoden:

Code: Select all

@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 }
}
Scheint, als würden die Zustände „Hover beendet“, „abgebrochen“ und „fehlgeschlagen“ nie in der hoverFunc aufgerufen.
Das Tippen ist nur ein normales Tippen, als ob ein Finger verwendet würde. Bei Verwendung von Fingern stürzt die App übrigens nicht ab, sie ist also lediglich mit dem Hover verbunden, den der Stift aktiviert.
Ich schalte diese auch ein/aus oder entferne sie, wenn das Spiel pausiert, wegbewegt usw.
KI schlägt mir vor, diese Methoden nicht mehr zu verwenden und zu einem Benachrichtigungscenter-Ansatz überzugehen. Da es früher einwandfrei funktionierte, würde ich jedoch gerne zuerst sehen, ob dieser Fehler gefunden werden kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post