2010-09-12 45 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的风险。

相关问题