Vorrei rilevare se l'utente ha attivato Riduci trasparenza. È semplice chiamare la funzione UIAccessibilityIsReduceMotionEnabled()
e restituisce un Bool
. Ma si rivolge la mia app iOS 7 e 8 e questa funzione non è disponibile su iOS 7.Controllare se una funzione è disponibile in Swift?
in Objective-C, questo è come ho controllato per vedere se quella funzione esiste:
if (UIAccessibilityIsReduceMotionEnabled != NULL) { }
In Swift , Non riesco a capire come verificare se esiste o no. Secondo this answer, puoi semplicemente usare il concatenamento opzionale e se è nil
allora non esiste, ma a quanto pare è limitato ai protocolli Obj-C. Xcode 6.1 non piace questo:
let reduceMotionDetectionIsAvailable = UIAccessibilityIsReduceMotionEnabled?()
Vuole che tu rimuova il?. E ovviamente se lo fai, si bloccherà su iOS 7 perché quella funzione non esiste.
Qual è il modo corretto per verificare se questi tipi di funzioni esistono?
parentesi dopo un'espressione di funzione invocano la funzione. Cosa succede se li lasci fuori? – outis
Se si interrompe(), si dice la stessa cosa: cancellare il?: 'Operando di postfix '?' dovrebbe avere tipo opzionale; il tipo è '() -> Bool''. Inoltre se muovi il? dopo(), è tutto lo stesso messaggio di errore. – Joey
Sospetto che non sia effettivamente ancora disponibile. Dalla mia comprensione, il concatenamento opzionale viene utilizzato per le variabili di classe. 'UIAccessibilityIsReduceMotionEnabled' è più simile alla funzione statica – Peter