2010-09-12 48 views
1

我第一次使用UIGestureRecognizer,我希望我的應用能夠在iOS 3.0以上運行。 自從蘋果明確指出,該庫提供的iOS 3.2和更高版本我用下面的代碼:爲什麼UIGestureRecognizer在3.2版本中引入iPhone OS 3.0時會發現它?

// 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

zomg我喜歡這個問題的標題 – MooGoo 2010-09-12 15:48:47

+0

您是使用3.0還是在模擬器上測試真實設備?並且...識別器是否工作或者是否跳過了代碼? – Eiko 2010-09-12 16:14:10

+0

嗨Eiko,我正在測試一個設備,識別器實際上是功能。 – 2010-09-12 17:41:49

回答

5

這可能是因爲UIGestureRecognizer爲3.2之前認爲是私有的。如果您使用3.0以下版本的UIGestureRecognizer,請不要感到驚訝,如果某些東西有問題,或者不像預期那樣正常工作。

+0

就是這樣。我還注意到,UIGestureRecognizer和一些具體的類如'UITapGestureRecognizer'(IIRC)確實存在於3.0中,但被認爲是Apple專用的,即不被應用程序使用。他們不執行現在記錄的所有內容,例如, G。我認爲'UITapGestureRecognizer'沒有'numberOfTapsRequired'屬性。 – DarkDust 2010-09-12 16:41:22

+1

以下似乎工作正常。你怎麼看? ([[[UIDevice currentDevice] systemVersion]比較:@「3.2」]!= NSOrderedAscending { \t \t [self initGestureRecognizers]; \t} – 2010-09-12 18:36:27

1

在每個iOS版本中都有大量未記錄的API,Apple確實提到了這一點。然而,使用這些未記錄的API是App Store拒絕的理由。可能存在拒絕使用在一個給定的OS發佈/修訂中未記錄的但在另一個應用程序支持的另一箇中記錄的API的風險。

相關問題