Почему проверка для UIGestureRecognizer находит его на iPhone OS 3.0, когда он был представлен в 3.2? - PullRequest
1 голос
/ 12 сентября 2010

Я впервые использую UIGestureRecognizer и хочу, чтобы мое приложение работало на iOS 3.0 и выше. Поскольку Apple четко заявляет, что библиотека доступна в iOS 3.2 и более поздних версиях, я использовал следующий код:

// Make sure that Gesture recognition technology is supportted by the device SDK version
if ([UIGestureRecognizer instancesRespondToSelector:@selector(initWithTarget:action:)])
{
    [self initGestureRecognizers];
}

Удивительно, но когда я запускаю приложение на единственной цели, которая работает с SDK3.0, она отлично работает.


Я заменил условие на следующее:

if ([[[UIDevice currentDevice] systemVersion] compare:@"3.2"] != NSOrderedAscending) 
{ 
    [self initGestureRecognizers]; 
}

Я хотел бы получить комментарии об этом.

Спасибо

Ответы [ 2 ]

5 голосов
/ 12 сентября 2010

Это, вероятно, потому что UIGestureRecognizer считался закрытым до 3.2. Не удивляйтесь, если некоторые вещи глючат или не работают должным образом, если вы используете UIGestureRecognizer под 3.0.

1 голос
/ 12 сентября 2010

В каждом выпуске iOS есть множество недокументированных API, и Apple упоминает об этом. Однако использование этих недокументированных API-интерфейсов является основанием для отказа в магазине приложений. Вполне может быть риск отказа от использования API, который недокументирован в одном выпуске / ревизии ОС, но задокументирован в другом, оба из которых поддерживает ваше приложение.

...