Ich möchte erkennen, ob der Benutzer Transparenz reduzieren aktiviert hat. Es ist einfach, Sie rufen einfach die Funktion UIAccessibilityIsReduceMotionEnabled()
und es gibt eine Bool
zurück. Aber meine App zielt auf iOS 7 und 8, und diese Funktion ist nicht auf iOS 7.Überprüfen Sie, ob eine Funktion in Swift verfügbar ist.
In Objective-C, das ist, wie ich überprüft, ob diese Funktion vorhanden ist:
if (UIAccessibilityIsReduceMotionEnabled != NULL) { }
In Swift Ich kann nicht herausfinden, wie man überprüft, ob es existiert oder nicht. Nach this answer können Sie einfach optionale Verkettung verwenden, und wenn es nil
ist, dann existiert es nicht, aber das ist offensichtlich auf Obj-C-Protokolle beschränkt. Xcode 6.1 mag das nicht:
let reduceMotionDetectionIsAvailable = UIAccessibilityIsReduceMotionEnabled?()
Es möchte, dass Sie die? Entfernen. Und natürlich stürzt es bei iOS 7 ab, weil diese Funktion nicht existiert.
Was ist der richtige Weg zu prüfen, ob diese Arten von Funktionen existieren?
Klammern nach einem Funktionsausdruck Aufrufen der Funktion. Was passiert, wenn du sie auslässt? – outis
Wenn du ausgibst() sagt es dasselbe - lösche das?: 'Operand von postfix '?' sollte optionalen Typ haben; Typ ist '() -> Bool''. Auch wenn du das verschiebst? Nach der(), ist es die gleiche Fehlermeldung. – Joey
Ich vermute, dass es tatsächlich noch nicht verfügbar ist. Aus meiner Sicht wird die optionale Verkettung für Klassenvariablen verwendet. 'UIAccessibilityIsReduceMotionEnabled' ist mehr wie statische Funktion – Peter