Perché un assegno di UIGestureRecognizer trovare su iPhone OS 3.0, quando è stato introdotto in 3.2?
-
02-10-2019 - |
Domanda
Sto usando UIGestureRecognizer per la prima volta e voglio la mia app per l'esecuzione su iOS 3.0 in poi. Dal momento che Apple afferma chiaramente che la libreria è disponibile in iOS 3.2 e successive ho usato il seguente codice:
// Make sure that Gesture recognition technology is supportted by the device SDK version
if ([UIGestureRecognizer instancesRespondToSelector:@selector(initWithTarget:action:)])
{
[self initGestureRecognizers];
}
A sorpresa, quando si esegue l'applicazione su l'unico obiettivo che ho, che SDK3.0 corsa, funziona benissimo.
I sostituito la condizione al seguente:
if ([[[UIDevice currentDevice] systemVersion] compare:@"3.2"] != NSOrderedAscending)
{
[self initGestureRecognizers];
}
Mi piacerebbe ottenere commenti su di esso.
Grazie
Soluzione
Questo è probabilmente perché UIGestureRecognizer era considerata privata prima 3.2. Non stupitevi se alcune cose sono buggy o non del tutto il lavoro come previsto se si utilizza UIGestureRecognizer sotto 3.0.
Altri suggerimenti
Ci sono tonnellate di API non documentate in ogni release iOS e Apple fa parlare di questo. Tuttavia utilizzare di queste API non documentate è motivo di un negozio di rifiuto App. Ci può essere un rischio di rigetto da utilizzando un'API che in documentato in una data di rilascio / revisione del sistema operativo, ma documentato in un altro, entrambi i quali vostri supporti app.